(尚硅谷:视频:https://www.bilibili.com/video/BV1Y7411K7zz?p=257)
一:Cookie 和 Session:
1)实现一个功能,需要浏览器和服务器之间,进行多次会话,每一次会话中都会产生一些数据,
Cookie 和 Session 就是用来存储,浏览器和服务器 之间的会话产生的数据。
二:Cookie:
1)什么是 Cookie?
a:Cookie 是 servlet服务器 发送给 web浏览器的 少量键值对信息,储存在浏览器,每个 Cookie 大小,不能超过 4 KB,不支持中文,信息由浏览器保存。
b:web浏览器 再次请求 相同服务器时,通过 path 判断,请求会携带同 path 所有 Cookie信息 发送给服务器。
2)Cookie 的创建?
Cookie cookie = new Cookie("key01","value01");
resp.addCookie(cookie);
3)Cookie 的服务端获取?
a:想找到想要的Cookie需要 遍历
b:获取Cookie代码
Cookie[] cookies = req.getCookies();
for (int i = 0; i < cookies.length; i++) {
System.out.println(cookies[i].getName()+":"+cookies[i].getValue());
}
4)Cookie 值修改:
a:创建同名新 Cookie 覆盖。
b:获取 传来客户端 Cookie,修改值,在返回给客户端
cookies[i].setValue("123");
5)浏览器 Aplication 查看 Cookie 信息。
6)cookie 的生命周期:
a:管理 Cookie 何时销毁。
b:cookies[i].setMaxAge(100);
--正数:表示多少秒后删除 COokie。
--负数:表示浏览器关闭,Cookie删除。
-- 0 :立即删除 Cookie。
7)Cookie有效路径 Path 的设置
a:Path属性,是通过请求地址,过滤:path属性相同,才会携带对应路径的 Cookie。
三:Session 会话
1)Session 介绍:
a:Session 就是一个接口(HttpSession),
b:Session 就是会话,用来维护客户端和服务器之间关联 的技术。
c:每个客户端 都有自己的 Session 会话,Session 会话存储在服务器上。
d:Session 会话中,经常用来保存 用户登录之后 的信息。
2)如何创建/获取 Session:
a:HttpSession session = req.getSession();
-- 第一次调用:是 创建 Session 对象。存储在服务器中,
session域(默认 180 秒销毁)
-- 之后调用:获取前面创建好的 Session 对象。
-- 没有 0 ;
b:销毁 Session:
使此会话无效:session.invalidate();
3)Session 方法
a:判断是否为新创建 Session:
boolean aNew = session.isNew();
b:获取 Session 唯一标识 id:
String id = session.getId();
4)Session 域中,存储数据:
a:session.setAttribute("123","123");
b:session.getAttribute("123");
5)Session 生命周期控制:
a:设置:session.setMaxInactiveInterval(300);
-- 正数:设置session 超时时长
-- 负数:永不超时(极少使用 )
-- 设为无效:session.invalidate();
b:获取:session.getMaxInactiveInterval();
c:默认时长:有 Tomcat 中配置,也可以在 web.xml 中配置:
<session-config>
<session-timeout>20</session-timeout>
</session-config>
6)浏览器 和 服务器Session 之间,怎么进行关联的(关联的技术内幕)
a:Session 技术,底层其实是 基于 Session 技术实现的。
b:图片:
7)销毁session:
a:超时销毁:如果session 30分钟没有被使用,则会超时销毁。
b:自杀:当调用session.invalidate()方法时,将会立即销毁session。
c:意外身亡:当服务器非正常关闭时,session会立即销毁。
如果服务器正常关闭,session对象不会销毁。session将会以文件的形式保存在
服务器的work目录下,这个过程称之为session的钝化。
当服务器再次启动时,钝化着的session还可以再恢复回来,这个过程称之为session的活化!
8)作用范围:整个会话范围内
9)主要功能:在整个会话范围内共享数据
四:问题:
1)Cookie和session的区别
2)Cookie的特点
a:cookie是将会话中产生的数据保存在浏览器客户端, 是客户端技术
b:cookie是将数据保存在客户端浏览器, 容易随着用户的操作导致cookie丢失或者被窃取, 因此cookie中
保存的数据不太稳定, 也不太安全。
但是cookie将数据保存在客户端,对服务器端没有太多影响,可以将数据保存很长时间。
因此cookie中适合保存对安全性要求不高, 但是需要长时间保存的数据。
c:浏览器对cookie的大小和个数都有限制,一般推荐每一个站点给浏览器发送的cookie数量不超过20个,
每一个cookie的大小不超过4KB或1KB。
Cookie的应用:实现购物车、记住用户名、显示上次访问的时间、地点
3)Session的特点
a:session是将会话中产生的数据保存在服务器端,是服务器端技术
b:session将数据存在服务器端的session对象中,相对更加的安全,而且更加稳定。不容易随着用户的操作
而导致session中的数据丢失或者是被窃取。因此session中适合存储对安全性要求较高,
但是不需要长时间保存的数据。Session没有存储数据大小限制,因此session可以毫无节制的使用。
Session的应用:保存登录状态