Session
有效范围当前会话,从浏览器打开到浏览器关闭这个过程。
HttpSession和Cookie的区别
a)HttpSession数据存在服务器,Cookie数据存在浏览器上
b)Cookie存放数据是有大小限制的,HttpSession没有
cookie得大小是最大4k,Cookie的个数每个浏览器不同
c)Cookie不安全,HttpSession安全
HttpSession何时创建和销毁?作用范围:
创建:服务器端第一次调用getSession()创建HttpSession.
销毁:三种情况销毁session:
1.session过期. 默认过期时间为30分钟.
2.非正常关闭服务器.如果正常关闭session序列化到硬盘.
正常关闭服务器的话,session会被序列化到本地,在项目目录下会生成一个SESSIONS.ser文件,下次再打开服务器后,该文件会被反序列化.
3.手动调用session.invalidate();
作用范围:浏览器没有被彻底关闭之前的请求
服务器端一旦为浏览器创建session后,,浏览器端访问该页面时会携带一个cookie信息(请求头)
Cookie JSESSIONID=967DD636E09AF2E1D727A4FEAD6629E8
HttpSession创建的注意事项
a)IE8文件选项里的新建会话的方式去打开新的窗口访问页面,服务器则会为新的浏览器窗口重新创建一个新的session
b)浏览器中的隐私浏览去打开新的窗口访问页面,服务器则会为新的浏览器窗口重新创建一个新的session
c)正常情况下,开启浏览器后只要不是彻底关闭浏览器的话,访问页面则会公用同一个session
d)注意:服务器正常关闭,再启动,Session对象会进行钝化和活化操作。同时如果服务器钝化的时间在session 默认销毁时间之内,则活化后session还是存在的。否则Session不存在。如果JavaBean 数据在session钝化时,没有实现Serializable 则当Session活化时,会消失。
【HttpSession的问题】
访问Servlet会不会创建Session : 不会
访问JSP会不会创建Session :会.
访问html会不会创建Session :不会
作为域对象进行存取数据
a) 保存属性
void setAttribute(String name,Object value);
b) 取出属性
Obejct getAttribute(String name);
c) 移除属性
void removeAttribute(String name);
设置session过期时间
a)在web.xml配置seesion-config标签
销毁session的话需要在web.xml文件中配置
<session-config>
<!-- session在1分钟之后就被销毁 -->
<session-timeout>1</session-timeout>
</session-config>
b)代码设置
HttpSession session = request.getSession(true);
session.setMaxInactiveInterval(900);
c)tomcat默认过期时间是30分钟
d)手动销毁seesion
HttpSession session = request.getSession(true);
session.invalidate();
|
|