2.3 Cookie的原理分析
- Cookie的实现原理是基于HTTP协议的,其中涉及到HTTP协议中的两个请求头信息:
- 响应头:set-cookie,为浏览器设置
Cookie
,携带在响应数据中
- 请求头: cookie,告诉服务器现有的
Cookie
,携带在请求数据中,键值对,以分号分隔
- 默认:存储在浏览器内存
- 浏览器关闭时,内存释放,将被销毁
setMaxAge(int seconds)
:设置Cookie存活时间
- 正数:将Cookie写入浏览器所在电脑的硬盘,持久化存储,到时间自动删除
- 负数(默认):将Cookie存储到浏览器内存,浏览器关闭时销毁
- 零:删除对应Cookie
tomcat 8.5.76
,其Cookie已支持中文- 若字符集不匹配,则浏览器报错500并给出相应提示
- 如果需要存储中文,邪恶需要使用URL编码进行转码
- 对将要存储的Cookie值进行编码
// import java.net.URLEncoder;String value = "中文值";value = URLEncoder.encode(value, "UTF-8");Cookie cookie = new Cookie("name",value); - 对浏览器的请求中的Cookie值进行解码
// import java.net.URLDecoder;String value = URLDecoder.decode(value, "UTF-8");
- 概念:服务端会话跟踪技术——将数据保存到服务端 。
- Session是存储在服务端而Cookie是存储在客户端
- 存储在客户端的数据容易被窃取和截获,存在很多不安全的因素
- 存储在服务端的数据相比于客户端来说就更安全
- 工作流程
- 在服务端的AServlet获取一个Session对象,把数据存入其中
- 在服务端的BServlet获取到相同的Session对象,从中取出数据
- 通过上述两步就可以实现一次会话中多次请求之间的数据共享
- 获取Session对象
HttpSession session = request.getSession(); - Session功能对象
// 存储数据到 session 域中void setAttribute(String name, Object o);// 根据 key,获取值Object getAttribute(String name);// 根据 key,删除该键值对void removeAttribute(String name); - 案例
- 向Session中写入数据
- 前提条件
- Session要想实现一次会话多次请求之间的数据共享,就必须要保证多次请求获取Session的对象是同一个
- Session 原理
- 浏览器发送请求到服务器,服务器在第一次获取session对象的时候,session对象会有一个唯一的标识,假如是
经验总结扩展阅读
- 大数据技术之HBase原理与实战归纳分享-中
- 电子信息工程专业和电子信息科学与技术专业有什么区别 哪个更好就业
- 生物技术专业和生物科学专业有什么区别 哪个更好就业
- 详解ROMA Connect API 流控实现技术
- 小鸡养殖技术与管理
- nmr是什么
- 控制测量技术设计书
- 大数据技术之HBase原理与实战归纳分享-上
- 四川师范大学应用技术学院怎么样
- Java核心技术阅读笔记 java中的自动拆装箱与缓存