会话跟踪技术:Session
服务端的会话跟踪技术,将数据保存在服务器
JAVAEE提供了HttpSession接口,来实现一次会话的多次请求间的数据共享功能
使用:
- 获取Session对象
HttpSession Session = request.getSession;
- Session的功能
Void setAttribute(String name ,Object o):存储数据到Session域中,设置键值对。
Object getAttribute(String name);根据键的名称获取值
Void removeAttribute(String name):根据键名称,删除该键值对。
Session原理:Session是基于Cookie来实现的
在第一个Servlet创建Session对象时,Tomcat服务器会给Session对象设置一个ID值,在第一次请求时会以请求头的形式set-Cookie:JSESSIONID=10发送并保留在浏览器中,下一次请求时浏览器会以Cookie:JSESSIONID=10发送到服务器中,等服务器(Servlet)再一次创建session对象时,会使用这个ID值来自动寻找Session对象。故此,可以确保创建的几个Session对象是同一个。
Session的使用细节
Session 钝化,活化
问题:服务器重启后,Session中的数据是否还存在?
答:仍然还存在,回答Session的钝化,活化
- 钝化:在服务器正常关闭后,Tomcat会自动将Session数据写入硬盘的文件中。
- 活化:再次启动服务器后,会从硬盘文件中加载数据到Session中。
Session的销毁(两个方法)
1.默认情况下,无操作,30分钟自动销毁(Tomcat文件中自动装配的)
也可以在web.xml文件中自己配置时间,时间单位是分钟
<session-config>
<session-timeout>100</session-timeout>
</session-config>
2.调用Session对象的invalidata()方法
Cookie和Session的区别
区别 | Cookie | Session |
存储位置 | 存储在浏览器中 | 存储在服务器中 |
安全性 | 不安全 | 安全 |
数据大小 | 3kb | 无大小限制 |
存储时间 | 时间特别长(1年都可以) | 默认30分钟 |
服务器性能 | 不占服务器资源 | 占服务器资源 |
一般情况下在用户未登录之前使用Cookie
在用户登录之后,保障安全使用Session