会话技术 cookie 和 Session(1)
Cookie
Cookie 属于客户端会话技术,它是服务器发送给浏览器的小段文本信息,存储在客户端浏览器的内存中或硬盘上。当浏览器保存了Cookie 后,每次访问服务器,都会在HTTP请求头中将这个Cookie 回传给服务器
Cookie 的分类
Cookie分为两种
1.会话级别Cookie (默认):Cookie 保存到浏览器的内存中,浏览器关闭则Cookie 失效。
2.持久的Cookie :Cookie 以文本文件的形式保存到硬盘上。
Cookle 的工作流程
Cookie 是基于HTTP协议实现的,工作流程如下。
1.客户端浏览器访问服务器时,服务器通过在HTTP响应中增加SetCookie 字段,将数据信息发送给浏览器
2.浏览器将Cookie 保存在内存中或硬盘上
3.再次请求该服务器时,浏览器通过在HTTP请求消息中增加Cookie 请求头字段,将Cookie 回传给Web服务器服务 器根据Cookie 信息跟踪客户端的状态。
Cookie是一段不超过4KB的小型文本数据,由一个名称(Name)、一个值(Value)和其它几个用于控制Cookie有效期、安全性、使用范围的可选属性组成。其中
通过 Servlet 设置 Cookie 包括三个步骤:
- 创建一个 Cookie 对象([ ] ( ) = , " / ? @ : ;)这里面红色都不要用
Cookie cookie = new Cookie("key","value");
- 设置最大生存周期,默认是-1表示该cookie保留到浏览器关闭为止
//保留时长24h cookie.setMaxAge(60*60*24);
- 发送 Cookie 到 HTTP 响应头
response.addCookie(cookie);
常用方法:
举例:添加cookie (一个cookie只能标识一种信息,所以至少要有name和value)cookie.getName() //获取cookie的名字 cookie.getValue() //获取cookie中保存的值 cookie.setValue() //设置/修改cookie中保存的值(没有setName方法,因为cookie的名字无法修改) cookie.setMaxAge() //设置cookie的最大生存时间
Cookie c = new Cookie("username","ww");// 新建一个Cookie对象
c.setMaxAge(24*60*60); // 设置过期时间1天,以秒为单位
response.addCookie(c); // 保存cookie到客户端
删除cookie
Cookie cookie = new Cookie("username","lis");// 新建Cookie
cookie.setMaxAge(0); // 设置生命周期为0,表示将要删除
response.addCookie(cookie); // 执行添加后就从response里删除了
修改cookie
Cookie cookie = new Cookie("username","zs");// 新建Cookie
cookie.setMaxAge(24*60*60); // 设置生命周期1day
response.addCookie(cookie); // 执行添加后就从response里覆盖修改了
删除和修改 都只需要新建一个value不一样的同名Cookie,但是删除需要多设置一个maxAge。除开新建的Cookie的value、maxAge,其余的都得一样,不然不起作用,不会覆盖。完整的案例可以参考菜鸟教程的。
创作不易,先赞后看
本文来自博客园,作者:Aons谦,转载请注明原文链接:https://www.cnblogs.com/Aons0812/p/16538231.html