Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/jsf/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 其他servlet中的Cookie集不会在对同一应用程序的不同servlet的请求中设置_Java_Jsf_Servlets_Cookies_Servlet Filters - Fatal编程技术网

Java 其他servlet中的Cookie集不会在对同一应用程序的不同servlet的请求中设置

Java 其他servlet中的Cookie集不会在对同一应用程序的不同servlet的请求中设置,java,jsf,servlets,cookies,servlet-filters,Java,Jsf,Servlets,Cookies,Servlet Filters,我在JBoss8服务器上部署了一个ear应用程序。前端部分是一个JSF应用程序。在frontend.war中,我定义了两个servlet: JSF2.2Servlet用于我的GUI,在127.0.0.1:8080/app上本地运行 MockAuthenticationServlet,在127.0.0.1:8080/app/auth上本地运行 MockAuthenticationServlet只设置一个cookie(测试cookie),如下所示: protected void doGet(Http

我在JBoss8服务器上部署了一个ear应用程序。前端部分是一个JSF应用程序。在frontend.war中,我定义了两个servlet:

  • JSF2.2Servlet用于我的GUI,在127.0.0.1:8080/app上本地运行
  • MockAuthenticationServlet,在127.0.0.1:8080/app/auth上本地运行
  • MockAuthenticationServlet只设置一个cookie(测试cookie),如下所示:

    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        Cookie cookie = new Cookie(COOKIE_NAME, "12345");
        cookie.setPath("/");
        resp.addCookie(cookie);
        resp.sendRedirect("/app");
    }
    
    以下是从doFiter调用的ServletFilter中的方法:

    private Cookie getCookie(HttpServletRequest request) {
        if (request.getCookies() != null) {
            for (Cookie c : request.getCookies()) {
                if (c.getName().equals(COOKIE_NAME)) {
                    return c;
                }
            }
        }
    
        return (Cookie) request.getAttribute(COOKIE_NAME);
    }
    
    上一次返回仅适用于作为属性发送的情况。cookie应该从循环中返回


    我已经调试了MockAuthenticationServlet并设置了Cookie,我在打开浏览器cookies列表时也看到了它。但是,在我的ServletFilter中,我想检查是否设置了此cookie,请求中的cookie列表为null。我错过什么了吗?谢谢您的提示。

    发布servlet过滤器的代码,您是在设置cookie之后还是在itI添加获取cookie的过滤器方法之前进行检查。过滤器检查每个进入/javax.faces.resource的请求。如果未设置cookie,则计划重定向到MockAuthenticationServlet。从MockAuthenticationServlet设置后,应将其重定向回。我还要说,我在浏览器中看到了cookie,但在调试java代码时它是空的。域与127.0.0.1相同,只是上下文路径已更改。请使用浏览器插件确定cookie是否实际发送到服务器。如果是,请在问题中提供完整的HTTP头集。