一.session技术
把会话数据保存到服务端的技术,是session技术。session依赖于Cookie。
(一)怎样获取session(重点)
HttpSession session = request.getSession();
方法有两个作用:
- 获取原有的session 客户端有JSESSIONID,并且服务端有对应的session对象存在,获取原有的session
- 创建新的session 获取不到原有的session时,会创建新的session。
(二)怎样向session里存取数据()
域对象存取数据必定有三个方法: setAttribute getAttribute removeAttribute
session域对象的生命周期:
何时创建: 客户端的JSESSIONID和服务端的session对应不上并且要执行request.getSession();
何时销毁:
- 服务器非正常关闭
- 手动销毁
session.invalidate();
作用范围:一次会话期间- 会话超时,session自动销毁。session默认是30分钟超时。
tomcat的web.xml中有默认的会话超时配置30分钟。
我们可以在web.xml里面配置session的时间,单位是分钟
<session-config>
<session-timeout>60</session-timeout>
</session-config>
二、什么样的场景适合使用会话技术保存数据
- 购物车。 每个不同的客户端访问同一个服务端,他们的购物车数据必定是不同的,这些数据是属于某一个客户端与服务端会话的数据。可以使用会话技术来保存这些数据。
使用Cookie做购物车:
可以让购物车里的数据保存很长时间
不方便保存复杂数据,大量数据 使用session做购物车:
可以保存复杂数据,大量数据
购物车数据不能长期保存- 用户登录状态 登录状态通常是保存在session中。通常是把登录的User对象放到session里。 只要一次登录,把登录状态放到session里,sessionid由浏览器自己保存。之后当浏览器访问其它资源的时候,我们可以再获取session对象,从中获取到是否是已经登录状态。
- 验证码校验 如果是已登录,允许访问;如果判断是未登录,不允许访问。 通常是保存在session中。