我想知道如果客户端浏览器已禁用cookie功能,我该如何管理会话..
如果我想在简单的JSP - Servlet中实现它,那么我该怎么做呢?
提前致谢...
答案 0 :(得分:3)
没有Cookie,您有两种选择。第一个是通过Url传递sessionId。这需要在服务器上进行大量工作,因为您发回的每个URL都必须附加一个sessionId(通常以查询字符串参数的形式)。例如:
/路径/到/页
变为
/路径/到/页?的sessionid = ASDFG-ASDFG-ASDFG-ASDFG-ASDFG
您拥有的另一个选择是将您通过http获得的信息组合成“唯一”密钥并创建自己的会话桶。通过组合Http UserAgent,RemoteIp和RemoteXfip,您可以接近唯一地识别用户,但不能保证此密钥是100%唯一的。
答案 1 :(得分:2)
答案 2 :(得分:2)
必须使用response.encodeURL("page.jsp")
这会将会话ID添加到每个URL的末尾,因此不必启用cookie。
请注意,您必须手动为每个网址执行此操作才能使其正常工作。
有关详细信息,请参阅this link。
答案 3 :(得分:2)
在JSP方面,您可以使用JSTL的<c:url>
进行此操作。
<a href="<c:url value="page.jsp" />">link</a>
很容易。当禁用cookie时,它会自动附加jsessionid
。
在Servlet端,您需要HttpServletResponse#encodeURL()
或者通常是Servlet内的首选 - HttpServletResponse#encodeRedirectURL()
。
response.sendRedirect(response.encodeRedirectURL("page.jsp"));