JAVA系列:浏览器禁用cookie后如何实现session?

目录

URL地址重写

session和cookie的有效时长 


URL地址重写

绝大多数的手机浏览器都不支持Cookie。Java Web提供了另一种解决方案:URL地址重写

原理是将该用户Session的id信息重写到URL地址中。服务器能够解析重写后的URL获取Session的id。这样即使客户端不支持Cookie,也可以使用Session来记录用户状态。

HttpServletResponse类提供了encodeURL(String url)实现URL地址重写,该方法会自动判断客户端是否支持Cookie

  • 如果客户端支持Cookie,会将URL原封不动地输出来。
  • 如果客户端不支持Cookie,则会将用户Session的id重写到URL中。
  • 还有一种表单隐藏字段技术,就是服务器会自动修改表单,添加一个隐藏字段,以便在表单提交时能够把session id传递回服务器。

 

如何拿到session

从请求中得到会话ID,只需一行代码:
HttpSession session = request.getSession();

session和cookie的有效时长 

session

服务器会把长时间没有活动的Session从服务器内存中清除,此时Session便失效。具体根据服务器设置,一般在二三十分钟左右。

cookie

若不设置过期时间: 表示这个cookie的生命周期为浏览器回话期间,关闭访问服务器的浏览器窗口,cookie就消失了。一般称为回话cookie,保存在内存中 若设置了过期时间:则cookie会存储在硬盘上,直到超过有效时间。

 

session什么时候被创建

一个常见的错误是以为session在有客户端访问时就被创建,然而事实是直到某server端程序(如Servlet)调用HttpServletRequest.getSession(true)这样的语句时才会被创建。

 

session何时被删除

A.程序调用HttpSession.invalidate()

B.距离上一次收到客户端发送的session id时间间隔超过了session的最大有效时间

C.服务器进程被停止

再次注意关闭浏览器只会使存储在客户端浏览器内存中的session cookie失效,不会使服务器端的session对象失效。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

NIO4444

如果对您有帮助,欢迎打赏支持!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值