Cookie详解
来源:互联网 发布:淘宝秀当网怎么报名 编辑:程序博客网 时间:2024/05/16 17:44
最近闲来无事,复习复习以前的知识吧.
并总结一下,与猿猴们共享:Cook详解
1: cookie的为什么会出现呢?
问题:由于请求只能获得本范围的属性, 不能获得其他request的属性.(多个请求不能共享数据)
解决方案一:提高到servletcontext范围, 但是存在问题--->所有的用户共用这个属性, 导致了串户的操作.
解决方案二 : 将数据保存在客户端中去.这就是cookie的出现原因.
2: 什么是cookie呢?
就是服务器将数据发送到客户端, 之后客户端再讲数据发送回来的技术.
至于客户端如何保存?不同的浏览器的保存方式是不同的, IE是保存在固定目录中的. 火狐和谷歌是指定文件中的.
从另外一个角度来看,cookie是客户端和服务器端进行有状态连接的保证.(这个时候cookie更像是标识信息)
3: 那么如何操作cookie呢?
(1)cookie技术的实现
// 创建cookieCookie cookie = new Cookie("name", "jingtao");// 将cookie发送到客户端response.addCookie(cookie);/* * 这个操作影响的http response协议内容为: * Set-Cookie: name=jingtao * * 当客户端中存在cookie的时候, 客户端发送请求的http request协议的内容为: * Cookie: name=jingtao; JSESSIONID=EA052E877AC130124DFE26D86526B343 * */
(2)cookie的持久化操作(之前的已经实现了在多个request中共享数据了了,但是仅仅限制于某一个会话范围,可不可以提高到每一个会话中request都共享数据呢)
// Cookie 的持久化 // 创建cookie Cookie cookie = new Cookie("name","jingtao"); // 持久化cookie cookie.setMaxAge(60 * 60); // 在Set-Cookie响应头中 多了一个 Expires=Wed, 09-Jul-2014 02:36:00 GMT(过期时间) // 默认状态是 当浏览器关闭后 则相关的Cookie会自动删除 // cookie.setMaxAge(0); // 如果是0, 则代表客户端浏览器不保存这个cookie, 并且session缓存中的也不保存这个cookie. 这个功能其实是删除cookie // cookie.setMaxAge(-1); // 如果是负数, 则代表客户端浏览器不保存, 但是session中保存. // 添加cookie response.addCookie(cookie); // 在http response中多了一个头 Set-Cookie:
(3)Cookie的路径(访问权限问题)
/* cookie路径: <span style="white-space:pre"></span>cookie的默认路径为: 所在servlet的目录. <span style="white-space:pre"></span>对于不同路径的cookie, 所访问的权限也是不同的: <span style="white-space:pre"></span>当浏览器发送Cookie数据的时候, 会把本路径下的数据, 以及它父路径的数据都读取过来放到cookie头中. <span style="white-space:pre"></span>那么如何修改cookie的路径呢? cookie.setPath(); */ Cookie cookie = new Cookie("2222","2222"); // 设置cookie的访问路径 Set-Cookie: 2222=2222; Path=/web_servlet/ cookie.setPath("/web_servlet/"); // cookie.setPath("/"); // 如果是 / ,则代表是域名路径, 如www,baidu,com 就是 baidu.com/ response.addCookie(cookie);
(4)cookie跨域名共享数据
前提:1>在本地计算机中添加2个本地DNS解析域名,(在host目录下添加)
127.0.0.1 www.jingtao.com
127.0.0.1 www.bbs.jingtao.com
2>在tomcat中配置2个虚拟主机(tomcat的配置文件servlet.xml中添加)
<Host name="www.jingtao.com" appBase="jingtao" unpackWARs="true" autoDeploy="true" xmlValidation="false" xmlNamespaceAware="false"> </Host> <Host name="www.bbs.jingtao.com" appBase="bbs" unpackWARs="true" autoDeploy="true" xmlValidation="false" xmlNamespaceAware="false"> </Host>
3>设置
Cookie cookie = new Cookie("name", "value");cookie.setMaxAge(60 * 60 * 60); cookie.setPath("/"); cookie.setDomain(".jingtao.com");//注意这里设置域名是主域名,不包括子域名response.addCookie(cookie)
(5)cookie的数据最大长度是多少呢?
// The browser is expected to support 20 cookies for each Web server, 浏览器对于每个站点支持20条Cookie// 300 cookies total总共支持300条// and may limit cookie size to 4 KB each. 每条Cookie的大小不超过4Kb
0 0
- Cookie详解
- Cookie详解
- Cookie详解
- Cookie详解
- Cookie详解
- Cookie详解
- Cookie详解
- Cookie详解!
- cookie详解
- 详解cookie
- cookie详解
- Cookie详解!
- cookie详解
- Cookie详解
- Cookie详解
- Cookie详解
- cookie详解
- Cookie详解
- RMI、Hessian、Burlap、Httpinvoker、WebService的比较(转载)
- Android APK反编译详解(附图) .
- android studio使用收集
- 黑马程序员7K面试题:银行业务管理系统
- 5-2编写递归函数求Fibonacci数列的第n项
- Cookie详解
- 坐标系统与投影变换及在ARCGIS中的应用
- 设计模式之装饰模式
- 理解C#泛型集合—Dictionary<K,V>
- 快速排序JAVA实现
- 怎样在IAR中加入编译所需库的头文件?
- BITMAP BITMAPINFO BITMAPINFOHEADER
- python初体验
- linux系统时间的同步设置