会话管理之cookie

cookie

1,保存在浏览器客户端,减轻服务器负担

2,数据类型只能String型,而且有大小限制

3,数据存放相对不安全

session

1,保存在服务器端(服务器的内存中),占用服务器的资源

2,数据类型和数据大小没有限制

3,数据安全

 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。



  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值