一、问题:
Request对象解决了一次请求内的不同Servlet的数据共享问题,那么一个用户的不同请求的处理需要使用相同的数据怎么办呢?
解决:
使用session技术。
二、原理:
用户使用浏览器第一次向服务器发送请求,服务器在接受到请求后,调用对应的Servlet进行处理。在处理过程中会给用户创建一个session对象,用来存储用户请求处理相关的公共数据,并将此session对象的JSESSIONID以Cookie的形式存储在浏览器中(临时存储,浏览器关闭即失效)。用户在发起第二次请求及后续请求时,请求信息中会附带JSESSIONID,服务器在接收到请求后,调用对应的Servlet进行请求处理,同时根据JSESSIONID返回其对应的session对象。
使用:
1.创建session对象
HttpSession session =req.getSession();
2.存储数据到session中
session.setAttribute(String name, Object value);
3.获取session对象
HttpSession session =req.getSession();
4.获取session中的数据
session.getAttribute(String uname);注意:返回的object类型,需要强制转换
5.删除session中的数据
session.removeAttribute(String uname);注意:如果有数据则删除,没有则什么都不做。
三、特点:
- Session技术是依赖Cookie技术的服务器端的数据存储技术。
- 由服务器进行创建
- 每个用户独立拥有一个session
- 默认存储时间为30分钟(可以在tomcat下的web.xml中进行配置)
三、作用:
解决了一个用户的不同请求的数据共享问题。
四、注意:
只要不关闭浏览器,并且session不失效的情况下,同一个用户的任意请求在项目的任意Servlet中获取到的都是同一个session对象。
五、作用域:
一次会话