Cookie随笔
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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随笔的主要内容,如果未能解决你的问题,请参考以下文章
C#-WebForm-★内置对象简介★Request-获取请求对象Response相应请求对象Session全局变量(私有)Cookie全局变量(私有)Application全局公共变量Vi(代码片段