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

大家都知道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]);
}

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值