Jetty request.getSession(false)返回null,不应该是

时间:2014-04-14 04:18:26

标签: jsp servlets jetty session-cookies

我的服务器正在运行java 8和jetty 9.1.3.v20140225。

我有一个简单的servlet

@Override
public void doGet(final HttpServletRequest request,
        final HttpServletResponse response) throws IOException,
        ServletException {

    // get the parameters
    String contactIdParam = request.getParameter("contact_id");
    String authToken = request.getParameter("auth_token");

    // do things...

    // set session attributes
    logger.info("Setting session attributes");
    HttpSession session = request.getSession(true);
    session.setAttribute("npoci", npoci);

    // move along
    final RequestDispatcher view = request
            .getRequestDispatcher("npo-portal.jsp");
    logger.info("time: " + session.getMaxInactiveInterval());
    view.forward(request, response);
}

这把我带到了我的jsp。会话超时为30分钟。 jsp成功使用会话变量,调用request.getSession(false),因为我听说是必要的,并将表单发布回该servlet。 servlet的第一件事就是

    // Check session not null, and get interactions
    HttpSession session = request.getSession(false);
    if (session == null) {
        logger.error("Session was null");
        response.sendError(HttpServletResponse.SC_FORBIDDEN);
        return;
    }

会话总是为空。我已经在Chrome和Firefox中尝试了这一点,并验证了Cookie实际上仍然存在于我的浏览器中。

任何帮助表示感谢。

修改

servlet现在映射到/ npo-portal / update并执行view.forward(" npo-portal.jsp")。这并没有解决问题。

1 个答案:

答案 0 :(得分:0)

问题发生在jsp中 - 表单发布到http://localhost:8080/npo-portal/update。将帖子的地址更改为“更新”后,问题就解决了。我仍然有点困惑为什么,但感谢@ScaryWombat让我到那里。