引入:
由于HTTP协议是一种无状态的协议,浏览器主动发出一个请求,web服务器被动的回应一个结果,web服务器不管你是哪个浏览器发出的请求,都一样回应。所以浏览器每一次请求都是完全独立的,服务器也看不出请求之间的关联,同理浏览器下一次请求也不依赖与上一次请求。但是实际应用中,却需要上一次请求与下一次请求及以后多次请求相关联。这就产生了cookie技术,对每次请求使用标记,下次请求时,通过标记号来访问就ok了。所以说cookie技术是一种在客户端保持HTTP状态信息的技术。
服务器如何通过cookie把信息交给浏览器?
服务器通过响应头字段set-cookie,用来指定web服务器向客户端传送cookie的内容。一般都是如果服务器想要搞一个有状态的会话,就将响应消息头附带set-cookie这个字段来初始化这个会话。
形式:
属性=值(这个值只能是字符串,不能是对象)
cookie的原理:
1.服务器打算启动有状态的会话,服务器就创建一个Cookie对象,把会话的数据信息放入到Cookie对象中。
体现形式:Cookie cookie=new Cookie("name","value");
2.服务器发送cookie信息到浏览器。
体现形式:response.addCookie(cookie);
3.浏览器得到服务器发送的cookie,然后保存在服务器端。
4.浏览器下次再访问服务器时,直接带着cookie信息就完事了。
5.服务器收到浏览器带来的cookie信息。得到一个Cookie的数组,然后通过遍历出里面的一堆cookie对象。然后通过名字判断是否为步骤1中的name值,是就找到对应的值,就完事了。
体现形式:Cookie[ ] cookies= request.getCookies();
cookie技术的弊端:
1.前面提到了cookie是不能保存对象的,只能存字符串信息。
2.而且cookie信息容量不能超过4KB。
3.cookie中不能存中文信息。