会话技术 & Cookie & Session
会话: 用户通过浏览器访问 服务器内的资源。 访问和结束
会话跟踪: 服务器需要识别多次请求是否来自于同一浏览器,以便在同一次会话的多次请求间共享数据
主要总结:
- 减少多次请求
实现方式
- 客户端会话跟踪技术:Cookie
- 服务端会话跟踪技术:Session
Cookie 基本使用
- 保存一个凭证,客户端呢 每次发送请求携带Cookie 数据进行访问
相等于一个服务端MAP,服务端给个key。
Cookie基本使用
创建Cookie对象 ,设置数据
- Cookie.cookie = new Cookie("key","value");
发送Cookie到客户端,使用response对象
- response.addCookie(cookie)
获取cookie
Cookie[] cookies = request,getCookies();
遍历cookies数组
cookie.getName();
cookie.getValue();Cookie原理
Cookie的实现是基于HTTP协议的
- 响应头: set-cookie
- 请求头: cookie
Cookie 使用细节
Cookie 存活时间
setMaxAge(int second) 设置Cookie存活时间- 负数 默认值关闭Cookie销毁
- 零 删除对应的cookie
Cookie 存储中文
- cookie默认不能使用 中文
解决办法
- URL编码和解码
Session 基本使用
- 服务端会话跟踪技术: 将数据保存到服务端
- JavaEE 提供HttpSession接口,来实现一次会话的多次请求间数据共享
使用
获取对象
- HttpSession session = request.getSession();
对象功能
setAttribute(String name,Object c);
- 存储数据到session中
getAttribute(string name)
- 根据key值获取值
removeAttribute(string name)
- 获取key,删除健对
原理
Session 是 基于Cookie实现的
Session使用细节
Session 钝化 活化:
服务器重启后,Session数据是否还在
- 钝化: 在服务器正常关闭后,Tomcat会自动将Session数据写入硬盘文件中
- 活化:再次启动服务器后,从文件中加载数据到Session中
Session销毁
默认情况下,无操作,30分钟自动销毁
<session-config>
<session-timeout>30</session-timeout>
<session-config/>
- 在web.xml中配置就行
手动销毁:
session.invalidate();
- 执行后直接销毁了