- 概念:服务器会话技术,在一次会话的多次请求之间共享数据,将数据保存在服务器端的对象中。
- Session的常用方法:
1.获取HttpSession对象:HttpSession session = request.getSession();
2.向Session中设置属性:void setAttribute(String name, Object value)
3.从Session中获得一个属性的值:Object getAttribute(String name)
4.获得Session的ID:Session.getId();
5.销毁Session:session.invalidate();
6.移除一个Session:void removeAttribute(String name)
- 原理:Session的实现是依赖Cookie的。
- 有关Session细节
(1)当客户端关闭,服务器不关闭,两次获取的Session是同一个吗?
默认情况下不是。如果需要相同,则可以创建Cookie,键为JSESSIONID,设置最大存活时间,让cookie持久化保存。
Cookie c = new Cookie(“JSESSIONID”,session.getId());
c.setMaxAge(60*60);
response.addCookie©;
(2)客户端不关闭,服务器关闭后,两次获得Session是同一个吗?
不是同一个,但是要确保数据不丢失。tomcat会自动完成以下工作:
session的钝化:在服务器正常关闭之前,将session对象系列化到硬盘上。
session的活化:在服务器启动后,将session文件转化为内存中的session对象即可。
(3)session的作用域
会话开始:一个会话的建立从客户端第一次向服务端请求开始
会话结束: ①浏览器关闭会话结束 ②session默认失效时间30分钟
③session对象调用invalidate() ④服务器关闭
选择性配置修改
<session-config>
<session-timeout>30</session-timeout>
</session-config>
-
session的特点
session用于存储一次会话的多次请求数据,存在服务器端。
session可以存储任意类型,任意大小的数据。 -
session与cookie的区别
①session存储数据在服务器端,cookie在客户端
②session没有数据大小限制,cookie有
③session数据安全,cookie相对于不安全