持续学习&持续更新中…
学习态度:守破离
Cookie&Session
会话跟踪
什么是会话跟踪
会话跟踪的特点
-
先有Cookie,再有Session
-
Session是基于Cookie的,Session底层就使用了Cookie
-
会话:
- 一个客户端与服务器之间的**一系列(多次)请求与响应(交流)**就是一个会话。
- 会话过程中的数据可以放在Session中。
- 一个客户端(浏览器)对应一个Session对象。可以理解为:一个Session就代表一个会话。
- Session死了(默认是浏览器被关闭了)就可以理解为一次会话结束。
- Session用于同一个客户端中多次请求之间的数据共享。
Cookie
参考资料
- https://zh.javascript.info/cookie
- https://developer.mozilla.org/zh-CN/docs/Web/HTTP/Cookies
什么是Cookie
Cookie的有效期
Cookie的作用域
设置Cookie时:Js(客户端)中的path不写默认是:/
;Java(服务端)中的path不写默认是/context path
服务器设置Cookie
服务器存储Cookie时,响应头Response Headers中设置了Cookie,因此服务器可以设置Cookie到客户端
存储Cookie
JavaScript:
// key=value
// 注意:分号(";")后要有一个空格(" ")
// ; 后面的是对前面cookie的描述,后面还可以有更多描述(domain、path等)
// document.cookie = 'name=Tom; max-age=10' // 10秒后过期
document.cookie = 'name=Tom' // 关闭浏览器后Cookie失效
document.cookie = 'sex=male'
Java:
Cookie cookie = new Cookie("name", "Jackson");
response.addCookie(cookie);
获取cookie
JavaScript:
console.log(document.cookie)
Java:
final Cookie[] cookies = req.getCookies();
if (null != cookies) {
for (Cookie cookie : cookies) {
System.out.println(cookie.getName() + "_" + cookie.getValue());
}
}
Session
Session特点
- Session用于同一个客户端下多次请求之间的数据共享
- 一个客户端(浏览器)对应一个Session对象。
- 一个Session就代表一个会话
- Session死了(默认是浏览器被关闭了)就可以理解为一次会话结束
getSession内部原理
JSESSIONID
Session的有效期
Cookie与Session的总结
注意和一些细节
- Cookie在客户端存储;Session在服务器端存储。
- Js和Java设置Cookie的max-age:
- Js和Java
- 不写max-age:浏览器关闭后Cookie失效
- max-age>0:数秒后Cookie失效
- max-age=0:删除该Cookie
- Js
- max-age<0:删除该Cookie
- Java
- max-age<0:浏览器关闭后Cookie失效
-
客户端请求服务器时,请求头Request Headers中设置了Cookie,因此客户端可以发送Cookie到服务器
-
服务器存储Cookie时,响应头Response Headers中设置了Cookie,因此服务器可以设置Cookie到客户端
参考
李明杰: Java从0到架构师②JavaEE技术基石.
本文完,感谢您的关注支持!