会话技术——Cookie
时间:2020-04-28
本文章向大家介绍会话技术——Cookie,主要包括会话技术——Cookie使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
Cookie
1.什么是Cookie?
Cookie是客户端技术,程序将每个用户的数据以Cookie的形式写给用户的各自浏览器,当用户使用浏览器去访问服务器中的web时,以后每次请求都会将之前保存的共享数据发送给服务器。
2.作用:
实现会话跟踪
*实现原理
1.客户端发送请求给服务器
2.服务器发送响应头set-cookie并携带数据给客户端
3.客户端接收到响应头,并保存数据
4.客户端会使用set-cookie数据带给服务器
5.服务器获取消息头的数据
![](https://img2020.cnblogs.com/blog/1668748/202004/1668748-20200428110532258-1896279847.png)
Cookie的操作
1.创建Cookie对象
Cokkie cokkie=new Cokkie(String name,String value)
*name: 当前Cookie取的唯一名字.
*value: 存储在Cookie的共享数据,只能是字符串类型.
Cookie cookie = new Cookie("currentName", "ZYGui");
1.把Cookie放入响应中,响应给浏览器,把共享的数据存储到浏览器中
respond.addCookie(cookie)
2.获取Cookie及里面的数据
Cookie [] cs=request.getCookie();
![](https://img2020.cnblogs.com/blog/1668748/202004/1668748-20200428111035690-2012506682.png)
3.修改Cookie中指定的属性名的属性值
1.重新创建一个新的同名Cookie,覆盖之前的Cookie
Cookie cookie=new Cookie(String name,String name)
2.先获取之前的Cookie对象,然后调用setValue(String newValue)方法
//注意:重新设定了Cookie值后需要重新将cookie再次发送给浏览器
respond.addCookie(cookie)
4.操作Cookie的生命周期,默认是在关闭浏览器的时候销毁
1.会话Cookie: 关闭浏览器之后,Cookie就销毁了. 缺省情况
2.持久化Cookie: Cookie可以保存指定的时间段.
3.设置Cookie的最大存活时间: cookie.setMaxAge(int seconds)
seconds = 0: 删除Cookie;
seconds < 0: 会话Cookie
seconds > 0: 存储指定的秒数.
5.删除Cookie
cookie.setMaxAge(0);
6.Cookie 中的key和value不支持中文
1.先对中文字符进行编码
Cookie ck=new Cookie("username",URLEncoder.encoder(username,"UTF-8"));
2.获取之后在进行解码
username=URLDecode.decode(value,"utf-8");
Cookie共享问题
1.Cookie的路径
Cookie在创建时,会根据当前的Servlet相对路径来设定自己的路径
比如Servlet类的路径/cookie/servlet ,相对路径未/cookie/
问题:此时只会访问/cookie/下的资源才能发送给服务器
解决方法:是指cookie路径:cookie对象.setPath(String url)
表示当前应用中的所有资源都能够共享Cookie下的信息
为什么要设置路径,当访问某些页面时,不希望携带cookie.此时就可以设置cookie的携带路径.
路径写法: /项目名称, 所有项目中添加cookie,访问时都会携带.
设置 /项目名称/p, 此时只访问/p时,才携带cookie,其他路径不携带.
2.域范围
在多个应用之间实现数据共享,那么需要设置域范围,比如:
news.baidu.com
map.baidu.com
*ck.setDomian("baidu.com")
Cookie的缺陷
1.获取Cookie麻烦
2.Cookie不支持中文(Tomcat8.0后支持中文)
3.Cookie存储有限
一个浏览器对一个站点最多储存20kbCookie信息
一个浏览器最多储存300Cookie信息
4.共享数据容易泄露,不安全
5.一个Cookie只能存储一个字符串类型
最好的解决方案: 将数据保存在服务端(Session)
Cookie的用处
1.存储少量且不敏感的数据
2.在不登录的情况下,完成对身份的识别
原文地址:https://www.cnblogs.com/linjing111/p/12794281.html
- .net中使用oracle数据库分页的土办法
- 图表的一些资源
- 删除文件后,磁盘空间没有释放的处理记录
- silverlight:ListBox中如何取得DateTemplate/ItemsPanelTemplate中的命名控件?
- 表格效果2
- Linux终端复用神器-Tmux使用梳理
- 程序实现下载文件或者打开文件
- VisualTreeHelper
- Linux下路由配置梳理
- Gitlab利用Webhook实现Push代码后的jenkins自动构建
- db4o 7.4 for .net3.5试用手记
- JQuery笔记(五) 圆角表格的效果
- tomcat内存溢出问题记录
- 微信小程序开放 Wi-Fi、NFC 连接能力,未来可直接刷地铁?
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- LaTex学习笔记
- 聊聊dubbo-go的metricsFilter
- 配置.gitignore
- 同样的GitHub包你就下载失败
- Linux编译C++
- 聊聊dubbo-go的tracingFilter
- JDBC - 第一天
- JavaSE - 排序算法
- JavaSE - 多态的本质
- Result Maps collection does not contain value for XXX 错误
- 当端口被占用如何kill占用端口的进程
- 将本地仓库同步到Github上的远程仓库
- 毫不留情地揭开 ArrayList 和 LinkedList 之间的神秘面纱
- 关于void QProcess::start参数问题的解决
- Python格式化输出