我的服务器正在运行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")。这并没有解决问题。
答案 0 :(得分:0)
问题发生在jsp中 - 表单发布到http://localhost:8080/npo-portal/update
。将帖子的地址更改为“更新”后,问题就解决了。我仍然有点困惑为什么,但感谢@ScaryWombat让我到那里。