在本地使用React调用Java方法

时间:2018-02-28 19:30:06

标签: java reactjs rest api jsp

如何使用Java和React创建完整的Web应用程序,而无需创建其他API,甚至不能使用用户名:密码身份验证的私有API。

我希望它是用JSP创建的。

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

谢谢

2 个答案:

答案 0 :(得分:1)

我不认为可以在React等客户端库中与Java进行通信,而无需创建HTTP API。 但是你可以创建一个并添加一些额外的安全层,以确保只有你的应用程序可以通过检查每个调用的远程地址并验证调用者确实是你的服务器来调用你的Java API。

您可以使用getRemoteAddr()对象中的HttpServletRequest方法在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>

这应该满足您的需求,但如果您找到其他方式,请与我们分享。

答案 1 :(得分:0)

据我所知,第一个请求是否定的。但至于本地休息api,我知道大多数网络服务器都可以检查CORS标头并限制仅在回答请求时提供某些来源。因此,无论您使用哪种JRE Web服务器,请检查其访问请求标头中的源的API,并将其路由到其余代码。