Session:服务端会话跟踪技术:将数据保存到服务端。
Session对象,把数据存入其中在JavaEE中提供了HttpSession接口,来实现一次会话的多次请求之间数据共享功能。
具体的使用步骤为:
HttpSession session = request.getSession();
Session对象提供的功能:
存储数据到 session 域中
void setAttribute(String name, Object o)
根据 key,获取值
Object getAttribute(String name)
根据 key,删除该键值对
void removeAttribute(String name)
Session是如何保证在一次会话中获取的Session对象是同一个呢?
id:10id:10当做一个cookie,添加Set-Cookie:JESSIONID=10到响应头中,并响应给浏览器cookie: JESSIONID=10的格式添加到请求头中并发送给服务器Tomcatid:10的session对象,如果找到了,就直接返回该对象,如果没有则新创建一个session对象服务器重启后,Session中的数据是否还在?
钝化:在服务器正常关闭后,Tomcat会自动将Session数据写入硬盘的文件中
项目目录\target\tomcat\work\Tomcat\localhost\项目名称\SESSIONS.ser活化:再次启动服务器后,从文件中加载数据到Session中
SESSIONS.ser文件会被删除掉session的销毁会有两种方式:
默认情况下,无操作,30分钟自动销毁
对于这个失效时间,是可以通过配置进行修改的
在项目的web.xml中配置
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"
version="3.1">
<session-config>
<session-timeout>100session-timeout>
session-config>
web-app>
如果没有配置,默认是30分钟,默认值是在Tomcat的web.xml配置文件中写死的
调用Session对象的invalidate()进行销毁