首页 > 学院 > 开发设计 > 正文

会话管理之cookie

2019-11-10 18:45:41
字体:
来源:转载
供稿:网友

cookie保存在浏览器客户端

session保存在服务器端

 Cookie的API

                   Cookie类:保存会话数据

                             1)创建Cookie对象,用于保存会话数据

                                                        new Cookie(java.lang.String name,java.lang.String value)

                            2)设置Cookie对象

                                                        void setPath(java.lang.String uri)  设置cookie有效路径

                                                        voidsetMaxAge(int expiry)     设置cookie的有效时长

                                                        voidsetValue(java.lang.String newValue)  设置cookie的值

                            3)发送Cookie数据到浏览器保存

                                                        response.addCookie(cookie);

                             4)接收浏览器发送的Cookie数据

                                                        Cookie[] request.getCookies()

       Cookie的原理

                            1)服务器端创建Cookie数据,然后通过set-cookie的响应头把cookie数据发送给浏览器保存

                                            响应头:例如: set-cookie: name=eric

                           2)浏览器得到服务器发送cookie数据,保存在浏览器目录中。

                           3)浏览器在下次访问服务器时,会带着cookie数据访问服务器。通过cookie的请求头把cookie数据发送给服务器端

                                         请求头:例如: cookie: name=eric

                          4)服务器可以接受浏览器发送的cookie数据

                                          request.getCookies();      

public void doGet(HttpServletRequest request, HttpServletResponse response)			throws ServletException, IOException {		//1,创建cookie对象,保存会话数据			//如果要发送中文,必须先使用URLEncoder进行加密				String n = URLEncoder.encode("张三","utf-8");			Cookie c = new Cookie("name", "zdh");			Cookie c1 = new Cookie("email", "11mqzdh2013@163.com");			//设置有效路径,默认情况下,设置当前项目的根目录下			//c.setPath("/day11");						/*设置cookie的有效时长			 *  正整数: 表示超过了正整数的数值的时间,cookie就会丢失!!(cookie保存浏览器的缓存																				目录)单位:秒				负整数: 表示如果浏览器关闭了,cookie就会丢失!(cookie保存浏览器内存) (默认情况)				 0      :  表示删除同名的cookie				 */			//c.setMaxAge(10);//10秒后cookie消失			c.setMaxAge(-1);	//关闭浏览器cookie消失。也是默认情况			c1.setMaxAge(50);		//2,把cookie数据发送给浏览器,通过响应头携带cookie数据给浏览器(set-cookie)				//response.setHeader("set-cookie", "name=zzz");			//简化版本			response.addCookie(c);			response.addCookie(c1);		//3,浏览器在下次访问的时候携带了cookie数据,通过请求头发送给服务器(cookie)		//4,浏览器获取浏览器发送的cookie数据,//			String name = request.getHeader("cookie");//			System.out.PRintln(name);			Cookie[] cookie = request.getCookies();			if(cookie!=null){				for(Cookie ck:cookie){					String name = ck.getName();					String value = ck.getValue();					System.out.println(name+"="+value);				}			}else{                                                                                                				System.out.println("没有cookie 信息!!");			}	}

      

需要注意:                          

  1)设置cookie有效路径: setPath(uri) 。如果cookie在有效路径下,那么浏览器在下次访问该有效路径时就会带着cookie数据到服务器。

2)设置cookie的有效时长: setMaxAge(整数)

                       正整数:cookie数据保存在浏览器的缓存目录中(硬盘中)。例如10。10秒之后就cookie 就会丢失。(从最后一次访问cookie开始计算)

                       负整数: cookie数据保存在浏览器的内存中,浏览器关闭cookie数据就会丢失。

                       零:  删除同名的cookie

       3)可以同时往浏览器发送多个cookie数据,必须是字符串类型的。浏览器一般只允许存放300个Cookie,每个站点最多存放20个Cookie,每个Cookie的大小限制为4KB。


发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表