您的位置:首页 > Web前端 > JavaScript

jsp中使用URL重写跟踪Session,浏览器不支持Cookie的解决方案

2013-10-17 22:32 246 查看
大家都知道session关浏览器就会清除(即使sessionid会写到客户端的cookie中),如果浏览器新建一个父窗口,在原窗口不关闭的情况下,共享一个sessionId。在一次会话中,session是基于cookie的,也就是说当cookie被删除时,session又会创建。当客户端禁掉cookie时,就要通过URL重写获取sessionId,且sessionId不会改变。

HttpServletResponse接口提供了encodeURL(String url)实现URL地址重写。例如:

<a href=”<%= response.encodeURL(“index.jsp?c=1&wd=Java”) %>”>Homepage</a>

该方法会自动判断客户端是否支持Cookie。如果客户端支持Cookie,会将URL原封不动输出来。如果客户端不支持Cookie,则会将用户Session的ID重写到URL中。重写后的输出可能是这样的:
http://localhost:8080/xxx/index.jsp;jsessionid=091A82E070579D3FA881FE901E532422?c=1&wd=Java
其中jsessionid后面跟的就是session.getId()的值,这样session就可以使用了。

清掉request携带的所有cookie

Cookie[] cookies = request.getCookies();

for(int i = 0; i < cookies.length; i++){

cookies[i].setMaxAge(0);

response.addCookie(cookies[i]);

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐