java session 生命周期_javaWEB总结(21):HttpSession的生命周期

前言

本文分文两个demo进行,第一个demo主要是用来测试:什么时候创建HttpSession,第二个demo用来测试:什么时候销毁HttpSession。围绕这两个测试用例进行总结。

DEMO1

目录结构

ce8f4764acb6a0bf59974ef718dc72a5.png

web.xml

javaWeb_21

session.jsp

session.jsp

pageEncoding="UTF-8" session="false"%>

session.jsp

HttpSession session = request.getSession(false);

out.print(session);

%>

creatSession.jsp

creatSession.jsp

pageEncoding="UTF-8"%>

creatSession.jsp

session.jsp

初次访问session.jsp  返回null

b80622dbdf346549d40f67ae775de85b.png

访问creatSession后再访问session.jsp后,返回HttpSession

e94a05d983c0bd7e5c8d29dcf7a33c2d.png

b7a970be430e9aa521d491dce941dae2.png

总结:什么时候创建HttpSession

1.是否游览器访问服务器的任何一个servlet或jsp,服务器都会立即创建一个HttpSession对象呢?

不一定。若当前的JSP(或Servlet)是客户端访问的当前WEB应用的第一个资源,且Jsp的Page指定的session属性为false,则服务器就不会为JSP创建一个HttpSession对象;

若当前JSP不是客户端访问的当前WEB应用的第一个资源,且其他页面已经创建一个HttpSession对象,则会返回和当前会话关联的HttpSession对象,不会创建一个新的HttpSession对象。

2.session="false"表示当前JSP页面禁用session隐含变量,但可以使用其他显式的HttpSession对象。

3.对于servlet而言:若servlet是客户端访问的第一个WEB应用资源。则只有调用了request.getSession()或request.getSession(true)才会创建HttpSession对象。

4.在servlet中如何获取HttpSession对象

HttpServletRequest

Returns the current HttpSession associated with this request or, if there is no current session andcreate is true, returns a new session.

getSession(boolean create):若create为false,则若没有和当前JSP页面关联的HttpSession对象则返回null,若有则返回

该HttpSession.

若create为true,一定返回一个HttpSession对象,若没有和当前JSP页面关联的HttpSession对象,则服务器创建一个新的HttpSession对象返回,若有直接返回关联的HttpSession对象。

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

DEMO2

在createSession界面一直刷新后一直是同一个Session

e94a05d983c0bd7e5c8d29dcf7a33c2d.png

修改creatSession.jsp如下

pageEncoding="UTF-8"%>

creatSession.jsp

session.jsp

此后每次刷新后都会不是同一个session

75a4d1942649915d22f4e0b9c187a343.png

42cf55b16dcf3e75a64406a91720c5a0.png

若改成如下

pageEncoding="UTF-8"%>

creatSession.jsp

session.jsp

则五秒后才会新建一个session

总结:什么时候销毁HttpSession

1.直接调用HttpSession的invalidate()方法,该方法使HttpSession失效

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

3.超出HttpSession的过期时间:

①session.setMaxInactiveInterval(5)单位为秒;

②在tomcat/conf/web.xml中设置,单位为分钟;

③在应用/web-inf/web.xml中设置,单位为分钟。

4.并不是关闭了游览器就销毁了session,可通过持久化cookie或url重写访问session。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值