使用React本地调用Java方法

使用React本地调用Java方法,java,reactjs,rest,api,jsp,Java,Reactjs,Rest,Api,Jsp,我如何使用Java创建一个完整的web应用程序并做出反应,而不必创建RESTAPI,甚至不必创建带有用户名:密码身份验证的私有API 我希望它是用JSP创建的 是否可以使用react本地调用Java方法? 甚至创建一个只能在本地调用的restfull API 谢谢据我所知,第一个请求是否定的。但对于本地RESTAPI,我知道大多数web服务器都可以检查CORS头,并将其限制为仅为响应请求的特定来源提供服务。因此,无论您使用的是哪个JRE Web服务器,都要在请求头中检查其访问源代码的API,并将

我如何使用Java创建一个完整的web应用程序并做出反应,而不必创建RESTAPI,甚至不必创建带有用户名:密码身份验证的私有API

我希望它是用JSP创建的

是否可以使用react本地调用Java方法? 甚至创建一个只能在本地调用的restfull API


谢谢

据我所知,第一个请求是否定的。但对于本地RESTAPI,我知道大多数web服务器都可以检查CORS头,并将其限制为仅为响应请求的特定来源提供服务。因此,无论您使用的是哪个JRE Web服务器,都要在请求头中检查其访问源代码的API,并将其路由到rest代码

我认为不需要创建HTTP API,就不可能在诸如React之类的客户端库中与Java通信。 但是您可以创建一个并添加一点额外的安全层,以确保只有您的应用程序可以通过检查每个调用的远程地址并验证调用方确实是您的服务器来调用Java API

您可以使用
HttpServletRequest
对象中的
getRemoteAddr()
方法在Java中执行此操作

最好的方法是创建一个过滤器类,该类映射所有API链接,并验证每个调用中的远程地址,然后决定是否允许

下面是一个例子:

import javax.servlet.*;  

public class RequestFilter implements Filter{  

  public void init(FilterConfig config) throws ServletException {}  

  public void doFilter(ServletRequest req, ServletResponse res,  
      FilterChain chain) throws IOException, ServletException {  
        HttpServletRequest request = (HttpServletRequest)req;
        String callerIp = request.getRemoteAddr();
        if(callerIp.equalsIgnoreCase("MY-SERVER-IP-ADDRESS")) {
          chain.doFilter(req, res);
        }
        else {
          ((HttpServletResponse)res).sendError(HttpServletResponse.SC_FORBIDDEN, "Access denied !");
          return;
        }  
    }

    public void destroy() {}  
}  
将“MY-SERVER-IP-ADDRESS”替换为您的服务器IP

要映射所有调用,请在web.xml中设置筛选器标记,如下所示:

<filter>
    <filter-name>RequestFilter</filter-name>
    <filter-class>com.myPackage.requestFilter</filter-class>
</filter>
<filter-mapping>
    <filter-name>RequestFilter</filter-name>
    <url-pattern>/*</url-pattern>
</filter-mapping>

请求过滤器
com.myPackage.requestFilter
请求过滤器
/*

这应该可以满足您的需要,但如果您找到了其他方法,请与我们共享。

Java正在您的服务器上运行,JavaScript正在您的浏览器客户端上运行,因此不,您不能在浏览器客户端本地运行Java。如果您使用的是JSP,那么为要调用的React客户端代码添加REST支持并不难。