Cookie

Cookie

Cookie简介

由于HTTP是无状态协议,服务器不能记录浏览器的访问状态,也就是说服务器不能区分中两次请求是否由一个客户端发出。这样的设计严重阻碍的Web程序的设计。

Cookie实际上就是服务器保存在浏览器上的一段信息,用于区分不同用户。浏览器有了Cookie之后,每次向服务器发送请求时都会同时将该信息发送给服务器,服务器收到请求后,就可以根据该信息处理请求。

Cookie的用途

  • 网上商城的购物车
  • 保持用户登录状态
  • 163邮箱的7天免登陆

Cookie的原理

浏览器请求,服务器创建一个Cookie对象,该Cookie对象会携带用户信息。服务器将该Cookie发送给浏览器。以后浏览器再次请求时,会携带Cookie对象。服务器会通过该Cookie对象,区分不同用户。

Cookie的缺点

  • Cookie最为请求或响应报文发送,无形中增加了网络流量。
  • Cookie是明文传送的安全性差。
  • 各个浏览器对Cookie有限制,使用上有局限。

设置Cookie

  • 创建一个CookieServlet
  • 在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就是两个步骤:

  1. 创建Cookie对象

  2. 将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设置一个有效时间。

通过Cookie对象的setMaxAge()可以设置Cookie的有效时间。

其中setMaxAge()接收一个int型的参数,来设置有效时间。参数主要有一下四种情况:

①设置为0,setMaxAge(0):Cookie立即失效,下次浏览器发送请求将不会在携带该Cookie

②设置大于0,setMaxAge(60):表示有效的秒数60就代表60秒即1分钟,也就是Cookie在1分钟后失效。

③设置小于0,setMaxAge(-1):设置为负数表示当前会话有效。也就是关闭浏览器后Cookie失效

④不设置:如果不设置失效时间,则默认当前会话有效。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值