Cookie
概述
客户端会话技术,将数据保存到客户端,以后每次请求都携带Cookie数据进行访问。
基本使用
- 发送Cookie
- 创建Cookie对象,并设置数据
Cookie cookie = new Cookie("key","value");
- 发送Cookie到客户端:使用response对象
response.addCookie(cookie);
- 获取Cookie
- 获取客户端携带的所有Cookie,使用request对象
Cookie[] cookies = request.getCookies();
- 遍历数组,获取每一个Cookie对象:for
- 使用Cookie对象方法获取数据
cookie.getName(); cookie.getValue();
原理分析
对于Cookie的实现原理是基于HTTP协议的,其中设计到HTTP协议中的两个请求头信息:
- 响应头:set-cookie
- 请求头: cookie
使用细节
- Cookie的存活时间
- 设置Cookie存活时间
setMaxAge(int seconds)
参数值为:
1.正数:将Cookie写入浏览器所在电脑的硬盘,持久化存储。到时间自动删除
2.负数:默认值,Cookie在当前浏览器内存中,当浏览器关闭,则Cookie被销毁
3.零:删除对应Cookie
- Cookie存储中文
- 存储中文,需要掌握URL编码和解码的使用
Session
概述
Session:服务端会话跟踪技术:将数据保存到服务端
- Session是存储在服务端而Cookie是存储在客户端
- 存储在客户端的数据容易被窃取和截获,存在很多不安全的因素
- 存储在服务端的数据相比于客户端来说就更安全
基本使用
- 获取Session对象,使用的是request对象
HttpSession session = request.getSession();
- Session对象提供的功能
- 存储数据到 session 域中
void setAttribute(String name, Object o)
- 根据 key,获取值
Object getAttribute(String name)
- 根据 key,删除该键值对
void removeAttribute(String name)
原理分析
Session是基于Cookie实现的
使用细节
- 钝化
- 在服务器正常关闭后,Tomcat会自动将Session数据写入硬盘的文件中
- 活化
- 再次启动服务器后,从文件中加载数据到Session中
- Session销毁
- 默认情况下,无操作,30分钟自动销毁
- 调用Session对象的invalidate()进行销毁