在本地使用React调用Java方法

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在本地使用React调用Java方法相关的知识,希望对你有一定的参考价值。

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

我希望它是用JSP创建的。

是否有可能在本地响应Java方法?甚至创建一个只能在本地调用的restful API

谢谢

答案

我不认为可以在诸如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>

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

另一答案

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

以上是关于在本地使用React调用Java方法的主要内容,如果未能解决你的问题,请参考以下文章

Java基础之方法的调用重载以及简单的递归

深入了解android平台的jni---本地多线程调用java代码

react中如何在静态方法中调用静态属性

java 循环变量

根据父活动在片段中调用不同的方法

ASP.net MVC 代码片段问题中的 Jqgrid 实现