cookie的由来:
在程序中,会话跟踪是很重要的事情。理论上,一个用户的所有请求操作都应该属于同一个会话,而另一个用户的所有请求操作则应该属于另一个会话,二者不能混淆。例如,用户A在超市购买的任何商品都应该放在A的购物车内,不论是用户A什么时间购买的,这都是属于同一个会话的,不能放入用户B或用户C的购物车内,这不属于同一个会话。
而Web应用程序是使用HTTP协议传输数据的。HTTP协议是无状态的协议。一旦数据交换完毕,客户端与服务器端的连接就会关闭,再次交换数据需要建立新的连接。这就意味着服务器无法从连接上跟踪会话。即用户A购买了一件商品放入购物车内,当再次购买商品时服务器已经无法判断该购买行为是属于用户A的会话还是用户B的会话了。要跟踪该会话,必须引入一种机制。
Cookie就是这样的一种机制。它可以弥补HTTP协议无状态的不足。在Session出现之前,基本上所有的网站都采用Cookie来跟踪会话。
JSP中可通过<% java代码 %>方式,把cookie设置到其中。HTML的话需要用JS进行设置和获取。下面展示的是java代码:
设置cookie :
Cookie mycookie=new Cookie("cookieName",username+"#"+birthday+"#"+mail); // 新建Cookie
cookie.setMaxAge(60*60*24*365); // 设置生命周期,单位秒
response.addCookie(mycookie); // 输出到客户端
接收cookie:
String[] info =new String[]{ "", "", ""};
Cookie[] cook=request.getCookies();
If(cook!=null){
for(int i=0; i<cook.length; i++){
if(cook[i].getName().equals("cookieName")){
info = cook[i].getValue().split("#")
}
}
// 最后通过info[0]、info[1]、Info[2]这种方式获取cookie中存储的值。