【问题标题】:HttpSession.getSession().isNew() is always trueHttpSession.getSession().isNew() 始终为真
【发布时间】:2016-09-26 17:06:09
【问题描述】:

我正在使用 HtppServlet,我需要使用会话才能知道我必须做什么(第一次与否)。但是当我在会话时,它似乎总是一个不同的,所以这个过程总是做同样的事情,它应该是第一次做的。下面的代码:

        protected void processRequest(HttpServletRequest request, HttpServletResponse response)
                    throws ServletException, IOException {

                HttpSession session = request.getSession(true);
                response.setContentType("application/json");
                PrintWriter out = response.getWriter();

                try {
                       if (session.isNew()) {
                            String id=callMethod1();
                            session.setAttribute("ID",id);
                        } else {
                             callMethod2(session.getAttribute("ID"));
                        }
              }catch (Exception ex) {
                //Error handler
              } finally {
                out.close();
             }
        }

问题是我需要第二次调用callMethod2(),但它总是调用callMethod1(),我尝试使用session.getSession(false)session.getSession() 我正在使用curl 调用Servlet 和Google Chrome,有谁知道发生了什么或者我该如何解决这个问题?

【问题讨论】:

    标签: session servlets httpsession


    【解决方案1】:

    当您使用 curl 时,您必须将收到的 cookie 发回。最重要的 cookie 是 JSESSIONID cookie,它标识您的会话。如果您不将其发回,则服务器无法知道该请求是某个会话的一部分。

    这是一个关于 curl 和 cookie 的非常好的教程:https://curl.haxx.se/docs/http-cookies.html

    【讨论】:

    • 好吧,我尝试发送 cookie,但它似乎不起作用,或者我正在获得不同的会话
    • 您必须发送您在第一个请求的响应中收到的 JSESSIONID cookie。
    猜你喜欢
    • 2016-02-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-11-23
    • 2015-12-05
    • 2019-02-01
    • 2021-01-07
    • 2014-07-17
    相关资源
    最近更新 更多