会话cookies技术

Cookies是一种能够让网站服务器把少量数据储存到客户端的硬盘或内存,或是从客户端的硬盘读取数据的一种技术。Cookies是当你浏览某网站时,由Web服务器置于你硬盘上的一个非常小的文本文件,它可以记录你的用户ID、密码、浏览过的网页、停留的时间等信息。 当你再次来到该网站时,网站通过读取Cookies,得知你的相关信息,就可以做出相应的动作,如在页面显示欢迎你的标语,或者让你不用输入ID、密码就直接登录等等。从本质上讲,它可以看作是你的身份证。但Cookies不能作为代码执行,也不会传送病毒,且为你所专有,并只能由提供它的服务器来读取。保存的信息片断以"名/值"对(name-value pairs)的形式储存,一个"名/值"对仅仅是一条命名的数据。一个网站只能取得它放在你的电脑中的信息,它无法从其它的Cookies文件中取得信息,也无法得到你的电脑上的其它任何东西。 Cookies中的内容大多数经过了加密处理,因此一般用户看来只是一些毫无意义的字母数字组合,只有服务器的CGI处理程序才知道它们真正的含义。

Cookies的写入与读取

写入:

//创建一个cookie
Cookie ck=new Cookie("lastTime", System.currentTimeMillis()+"");
//Cookie ck1=new Cookie("lastTime", System.currentTimeMillis()+"");
//有效日期为0时 创建cokie到会话结束cookie
ck.setMaxAge(4);//一个小时
ck.setPath("/2011-10-24/demoCookie");
//发送给你的响应
response.addCookie(ck);

读取:

Cookie cookies[]=request.getCookies();
for(int i=0;cookies!=null&&i<cookies.length;i++){
Cookie cookie=cookies[i];
if("lastTime".equals(cookie.getName())){
String lastTime=cookie.getValue();
Date date=new Date(Long.parseLong(lastTime));
out.println(date.toLocaleString());
}
}

使用cookie完成曾经浏览过的商品信息

1、 向cookie存入信息

//发送cookie信息
		String value=makeCookieValue(request,id);//该方法在下面
		//产生一个Cookie对象
		Cookie cookie=new Cookie("goodsHistory",value);
		cookie.setMaxAge(60*60);
		cookie.setPath("/2011-10-24");
		//加入cookie
		response.addCookie(cookie);



private String makeCookieValue(HttpServletRequest request, String id) {

//声明返回值变量

String goodsHistory=null;

//第一步:获取cookie

Cookie cookie[]=request.getCookies();

for(int i=0;cookie!=null&&i<cookie.length;i++){

if("goodsHistory".equals(cookie[i].getName())){

goodsHistory=cookie[i].getValue();

}

}


       

       //保持最近访问的三个产品

       if(goodsHistory==null){

           goodsHistory=id;

           

       }else{        

           LinkedList<String> list=new LinkedList<String>(Arrays.asList(goodsHistory.split("\\_")));

           if(list.contains(id)){

              list.remove(id);

              list.addFirst(id);

           }else{

              if(list.size()>=3){

                  list.removeLast();

                  list.addFirst(id);

              }else{

                  list.addFirst(id);

              }

           }

           StringBuffer sb=new StringBuffer();

           for(String ids:list){

              sb.append(ids+"_");

           }

           sb.deleteCharAt(sb.length()-1);

           goodsHistory=sb.toString();

       }

       return goodsHistory;

}


2、 读取cookie信息

//显示浏览过的商品信息

      //声明浏览过的商品的value值

       String value=null;

       //获取cookie

       Cookie cookies[]=request.getCookies();

       //遍历cookie信息

       for(int i=0;cookies!=null&&i<cookies.length;i++){

           //浏览过商品的cookie cookie name value

           if("goodsHistory".equals(cookies[i].getName())){

              value=cookies[i].getValue();

           }

       }

out.println("你最近看过的产品有:");   

       if(value!=null){

           //第一步:拆分

           String ids[]=value.split("\\_");              out.print(gService.findByid(Integer.parseInt(ids[i])).getName());     

       }


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值