Cookie随笔
解决了服务器不能识别不同浏览器的问题,相当于给每个浏览器加了个“身份证”。
Cookie首先由服务器创建发给浏览器,随后浏览器每次访问服务器时都带上这个Cookie。
Cookie缺点:
·Cookie最为请求或响应报文发送,无形中增加了网络流量。
Cookie是明文传送的安全性差。
各个浏览器对Cookie有限制,使用上有局限。
Cookie创建:
·在Servlet的doPost()方法中编写如下代码:
//创建一个Cookie对象 Cookie cookie = new Cookie("username", "zhangsan"); //将Cookie对象放入response对象中 response.addCookie(cookie);
在浏览器中访问该Servlet,会发现响应头中出现如下内容:
Set-Cookie: username=zhangsan
如此就成功的向浏览器设置了一个Cookie,当我们在刷新页面时会发现浏览器的请求头中出现如下代码:
Cookie: username=zhangsan
· 同样我们还可以同时设置多个Cookie:
//创建一个Cookie对象
Cookie cookie1 = new Cookie("username", "zhangsan");
Cookie cookie2 = new Cookie("password", "123456");
Cookie cookie3 = new Cookie("age", "20");
//将Cookie对象放入response对象中
response.addCookie(cookie1);
response.addCookie(cookie2);
response.addCookie(cookie3);
浏览器会以一下形式发送Cookie:
Cookie: username=zhangsan; password=123456; age=20
·总之,设置Cookie就是两个步骤:
- 创建Cookie对象。
- 将Cookie对象加入到response中。
读取Cookie
·读取Cookie主要指从读取浏览器中携带的Cookie
只需要通过一个方法就可以得到浏览器中的Cookie,在Servlet或JSP中通过request对象调用getCookies()方法可以获得浏览器传送过来的所有Cookie对象,返回的是一个Cookie数组,通过遍历Cookie数组可以获得所有的Cookie信息。
例:
//通过request的getCookies()方法获的Cookie数组
Cookie[] cookies = request.getCookies();
//判断数组是否为空
if(cookies != null){
//如果不为空遍历数组
for(Cookie cookie : cookies){
//获取cookie的名字
String name = cookie.getName();
//获取cookie的键
String value = cookie.getValue();
System.out.println(name+"---"+value);
}
}
Cookie有效时间
·Cookie是存储在浏览器中的,浏览器不可能永远保存一个Cookie,一来是占用硬盘空间,再来一个Cookie可能只在某一时刻有用没必要长久保存。
通过Cookie对象的setMaxAge()可以设置Cookie的有效时间:
设置为0,setMaxAge(0) : Cookie立即失效,下次浏览器发送请求将不会在携带该Cookie
设置大于0,setMaxAge(60) :表示有效的秒数60就代表60秒即1分钟,也就是Cookie在1分钟后失效。
设置小于0,setMaxAge(-1) :设置为负数表示当前会话有效。也就是关闭浏览器后Cookie失效
不设置 : 如果不设置失效时间,则默认当前会话有效。
Cookie的路径
·因为不同网站的Cookie也不同,所以需要设置每个Cookie的路径。
设置为 /项目名/路径 cookie.setPath(“/项目名/路径”)
这样设置只有访问“/项目名/路径”下的的资源才会携带Cookie 如:/项目名/路径/1.jsp 、/项目名/路径/hello/2.jsp 等
如果不设置,默认会在访问“/项目名”下的资源时携带
如:“/项目名/index.jsp” 、 “/项目名/hello/index.jsp”
Cookie随笔的更多相关文章
- cookie使用随笔
cookie是一种浏览器缓存,可以理解为存放在浏览器上的一种小文件. 大小数目限制: 不同浏览器对于大小和数目均有不一样的限制,大小一般为4k,数目从30~50个(视浏览器类型),以键值对的形式存储, ...
- cookie绕过验证码并关联对话发送一个随笔草稿箱
先手动发送一个草稿,然后用fiddler取到body参数 代码: #coding:utf-8import requests login_url="https://passport.cnblo ...
- [Web][学习随笔]Session&cookie
Session 从登录建立连接到退出就是一次会话.Session数据就会在会话期间用户存在服务器端的数据.这样,当用户在Web页之间跳转时,存储在Session对象中的变量将不会丢失,而是在整个用户会 ...
- Cookie和Session的总结
1.开篇 在之前学习这一段的时候我一直有点没弄清楚,其实对Session这块的理解还可以,但是Cookie感觉始终还是欠缺点火候.之后的很长一段时间都基本上很少用Cookie了,渐渐的也淡忘了这一块的 ...
- 把cookie以json形式返回,用js来set cookie.(解决手机浏览器未知情况下获取不到cookie)
.继上一篇随笔,链接点我,解决手机端cookie的问题. .上次用cookie+redis实现了session,并且手机浏览器可能回传cookies有问题,所以最后用js取出cookie跟在请求的ur ...
- cookie 二:
本篇随笔从cookie的入门开始,介绍了cookie的设置获取和移除,还有一些小的应用案例:一.设置cookie <script> //设置cookie:function setCooki ...
- jmeter随笔(4)--中文url编码问题
最近在工作中,对jmeter实践的点滴的记录,这里分享交流,不一定正确,仅供参考和讨论,有想法的欢迎留言.谈论,手机上图片如果不清晰,请点击[阅读原文]查看. 技巧1:中文url编码问题 问题:我们抓 ...
- python接口自动化(十三)--cookie绕过验证码登录(详解)
简介 有些登录的接口会有验证码:短信验证码,图形验证码等,这种登录的话验证码参数可以从后台获取的(或者查数据库最直接).获取不到也没关系,可以通过添加cookie的方式绕过验证码.(注意:并不是所有的 ...
- django之模型层(model)--查询补充及cookie
已经连续写了好几篇django的模型层(model)增删改查的随笔了,没篇大篇幅都是查询相关的操作,可以看出查询在数据的操作中是多么的重要,而本篇最后再补充一点关于关于查询的一些方法,模型层基本的操作 ...
随机推荐
- DAO(Repository),Service,Controller层之间的相互关系
DAO层:DAO层主要是做数据持久层的工作,负责与数据库进行联络的一些任务都封装在此,DAO层的设计首先是设计DAO的接口,然后在Spring的配置文件中定义此接口的实现类,然后就可在模块中调用此接口 ...
- Jmeter分布式部署- linux
https://www.cnblogs.com/beginner-boy/p/7836276.html https://www.cnblogs.com/wuhenyan/p/6419368.html ...
- java高并发实战(一)——为什么需要并发
转自:https://blog.csdn.net/gududedabai/article/details/80813592
- 一个linux 驱动升级的小问题记录
重复踩了两次坑,所以简单记录下. 内核 3.10. 在修改了驱动的gro实现之后,进行驱动版本的升级,make && make install 之后,发现tg3的驱动,没有生效. 相同 ...
- K-Means算法:图片压缩
#读取实例图片# from sklearn.datasets import load_sample_image from sklearn.cluster import KMeans import ma ...
- 让新版appium支持by_name定位
org.openqa.selenium.InvalidSelectorException: Locator Strategy 'name' is not supported for this sess ...
- 初学python---排序
1.永久性排序 sort() a = [12,45,1,25,3] a.sort() print(a) ----[1, 3, 12, 25, 45] 2.临时排序 sorted() a = [12, ...
- react axios 配置
1:package.json 添加 "proxy": "代理地址" 2 封装axios 创建server.js 添加 import a ...
- Python对象迭代与反迭代相关问题与解决技巧
1.如何实现可迭代对象和迭代器对象(1)¶ In [1]: # 列表和字符串都是可迭代对象 l = [1,2,3,4] In [2]: s = 'abcde' In [3]: for x in l ...
- windows内核驱动内存管理之Lookaside使用
Windows内存管理中使用了类似于容器的东西,叫做Lookaside对象,每次程序员申请内存都会从Lookaside里面申请,只有不足的时候,Lookaside才会向内存又一次申请内存空间,这样减少 ...