tomcat 的session 生命周期
阅读原文时间:2021年04月20日阅读:1

1.session的创建

创建:request.getSession(), request.getSession(true);第一次调用时创建session对象,并在response返回头中添加Set-Cookie

JSESSIONID=188F48755786C564121…7832; Path=/jsptest; HttpOnly

request.getSession,等同于request.getSession(true);

获取其jsp或severlet创建的并保存在tomcat管理器中的session

当请求头中包括Cookie

JSESSIONID=188F48755786C56412147356A5167832

从session管理器中获取id对应的session对象

request.getSession(false): 只根据JSESSIONID获取其他人创建的session对象,如果不存在返回空.当request.getSession(false),是第一个请求时也不会自己创建session对象,只会返回空

jsp 禁止自动创建session对

设置page指令 session="false"

(1)自己不会自动创建session对象

(2)禁用jsp 中隐藏的session对象

(3)如果session对象不存在或session对象失效, request.getSesson()或reqeust.getSession(true) 会创建新的session对象.

(4)request.getSession(false),获取其他人创建的session对象,自己不会创建,不存在返回null

2.销毁session对象

(1)手动销毁.调用session.invalid()方法手动直接销毁session对象

(2)服务器卸载了当前web应用.

(3)超出httpSession的过期时间getMaxInactiveInterval() 单位为秒(session过期时间设置1.setMaxInactiveInterval() 2.在web.xml 配置文件中设置);

***并不是关闭了浏览器就销毁了session对象,session对象的销毁由tomcat根据session的过期时间进行销毁.

利用url重写跟踪session

使用response.encodeURL("hello.jsp")编码url会将 hello.jsp:JSESSIONID=188F48755786C56412147356A5167832加到每个编码的url后面