Java request.getSession()始终返回新会话id,尽管使用URL重写
我正在使用Firefox浏览器,禁用了Cookie。现在,对于生成会话id时的第一个点击,我可以看到一个新的会话id附加到URL-38E838B8D401E9E03DF93D5DFC10260C。但是在下一个请求中,会再次生成一个新id——A1C93B0A9B28E4BDCD9D5B0DA3793D15,从而再次创建一个全新的会话。我正在使用encodeRedirectURL()重写URL。这是我的密码:Java request.getSession()始终返回新会话id,尽管使用URL重写,java,session,servlets,Java,Session,Servlets,我正在使用Firefox浏览器,禁用了Cookie。现在,对于生成会话id时的第一个点击,我可以看到一个新的会话id附加到URL-38E838B8D401E9E03DF93D5DFC10260C。但是在下一个请求中,会再次生成一个新id——A1C93B0A9B28E4BDCD9D5B0DA3793D15,从而再次创建一个全新的会话。我正在使用encodeRedirectURL()重写URL。这是我的密码: Servlet Code: HttpSession session = req.getSe
Servlet Code:
HttpSession session = req.getSession();
if(session.isNew()){//this is always returning new
System.out.println("New Session created");
}
String contextPath = req.getContextPath();
resp.sendRedirect(resp.encodeRedirectURL(contextPath+"/chapter6/Authenticated2.jsp"));
在Authenticated2.jsp上,我可以看到附加到URL的jsession id。但是在这个jsp发出的点击submit按钮的后续请求中,当流到达Servlet代码时,它会生成一个新的会话id。那么URL重写是否应该有所不同呢
建议 确保会话ID包含在每个URL中。如果JSP中有一个URL缺少会话ID,会话ID将不会报告回servlet,servlet将生成一个新的会话ID。只要包含会话ID,就只能识别和维护会话 在servlet中,始终使用以下两种方法添加会话ID:
在JSP中,您可以使用类似于标记的东西。或者,您可以手动获取会话ID并附加
;jsessionid=xxx
位于URL末尾,查询字符串之前。在生成表单操作的URL时是否使用URL重写?这是需要在应用程序生成的每个URL上执行的操作。给我们看看表格的代码。你指出的是正确的。servlet中的所有内容都是正确的。jsp中的操作实际上需要进行编码,就像servlet中的所有内容都是正确的一样。jsp中的操作实际上需要像这样编码。谢谢你的关注。