目录

​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对象失效。