Cookie的使用方法

一、cookie的作用

在我们平常写的B/S程序中,会经常用到cookie,主要有以下一些作用:

1、记录用户名和密码

以及该用户需要保存的一些信息,如购物购站,使用cookie,可以让用户自动登录到站点等。

2、定制站点

可以使用cookie来记录用户的偏好。

3、定向广告

可以使用cookie来记录用记经常访问的主题,并向他们显示与这些主题相关的广告。

二、向客户程序发送cookie

1、创建cookie对象

Cookie c = new Cookie(“userId”,”landril”);

2、设置最大时效,默认该cookie是存储在浏览器的内在中,用户关闭浏览器则被删除,下面的方法是将cookie存储在硬盘上。

c.setMaxAge(60*60*24);//一天,如果设置为0则是删除该cookie

3、将cookie放入到HTTP响应报头,可以使用HttpServletResponse的addCookie方法,此方法不修改之前指定的Set-Cookie报头,而是创建新的报头。

response.addCookie(c);

注意:设置cookie的步骤为创建cookie对象,设置最大时效,将cookie放入响应报头,即发送到客户程序,记住一定要将cookie发送到客户程序

三、从客户端读取cookie

1、调用HttpServletRequest的getCookies得到一个Cookie对象的数组

2、对数组进行循环,调用cookie的getName方法,获取具体的cookie的值

Cookie[] cookies = request.getCookies();

if(cookies != null){

for(int i=0;i

Cookie c = cookies[i];

if(“userId”.equals(c.getName())){

System.out.println(c.getValue());

}

}

}

四、cookie的常用方法

1、setComment()/getComment():指定或查找与该cookie相关的注释

2、setDomain()/getDomain():设置或读取该cookie适用的域

3、setMaxAge()/getMaxAge():操作cookie保留的时间,多长时间后过期

4、getName():读取cookie的名称

5、setPath()/getPath():设置或取得cookie适用的路径

cookie.setPath(“/”);指定服务器的所有页面都应该收到该cookie

6、setSource()/getSource():指定cookie是否只能通过加密连接(SSL)

默认false,表示cookie适用所有连接

7、setValue()/getValue():指定或获取cookie的值

五、使用cookie

1、RepeatServlet.java

publicclassRepeatServletextendsHttpServlet {

publicvoiddoGet(HttpServletRequest request, HttpServletResponse response)

throwsServletException, IOException {

booleannewa=true;

Cookie[] cookies = request.getCookies();

if(cookies !=null){

for(inti = 0; i < cookies.length; i++) {

Cookie c = cookies[i];

if((c.getName().equals("repeat")) && (c.getValue().equals("true"))) {

newa=false;

break;

}

}

}

String title;

if(newa) {

Cookie rtn =newCookie("repeat"," true");

rtn.setMaxAge(60*60*24*365);

response.addCookie(rtn);

title ="First Welcome";

}else{

title ="Welcom Back";

}

response.setContentType("text/html");

PrintWriter out = response.getWriter();

out.println("

");

out.println(title);

out.println("");

}

publicvoiddoPose(HttpServletRequest request, HttpServletResponse response)

throwsServletException, IOException {

doGet(request,response);

}

}

2、CookieUtil.java

publicclassCookieUtil{

publicstaticString getValue(HttpServletRequest request,String cName,String value){

Cookie[] cookies = request.getCookies();

if(cookies !=null){

for(inti = 0; i < cookies.length; i++) {

Cookie cookie = cookies[i];

if(cName.equals(cookie.getName())) {

returncookie.getValue();

}

}

}

returnvalue;

}

publicstaticCookiegetCookie(HttpServletRequest request,String cName){

Cookie[] cookies = request.getCookies();

if(cookies !=null){

for(inti = 0; i < cookies.length; i++) {

Cookie cookie = cookies[i];

if(cName.equals(cookie.getName())) {

returncookie;

}

}

}

returnnull;

}

}

3、AccessCountServle.java记录访问数

publicclassAccessCountServletextendsHttpServlet {

publicvoiddoGet(HttpServletRequest request,HttpServletResponseresponse)

throwsServletException, IOException {

String acount = CookieUtil.getValue(request,"acc","1");

intcount = Integer.parseInt(acount);

Cookie cookie =newCookie("acc",String.valueOf(count+1));

cookie.setMaxAge(60*60*24*365);

response.addCookie(cookie);

response.setContentType("text/html");

PrintWriter out = response.getWriter();

out.println("Hello,the number is

");

out.println(count);

out.println("");

}

publicvoiddoPost(HttpServletRequest request,HttpServletResponseresponse)

throwsServletException, IOException {

doGet(request,response);

}

}

cookie的具体应用

if(checked){//当数据请求成功的时候如果checked的值为true则设置本机的cookie

  var date =new Date();//获取当前时间

  date.setDate(date.getDate()+30);//设置当前的日期为30天以后的日期

  document.cookie ='user='+nameVal+";expires="+date.toGMTString();

  document.cookie ='pwd='+encodeURI(pwdVal)+";expires="+date.toGMTString();

}

//读取cookie的函数

  function getCookie(name){

var arr,reg=new RegExp("(^| )"+name+"=([^;]*)(;|$)");

  if(arr=document.cookie.match(reg))

return unescape(arr[2]);

  else

      return null;

}

var cookie =document.cookie;

if(cookie){

$('.username').val(getCookie('user'));

  $('.pwd').val(getCookie('pwd'));

}

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 158,560评论 4 361
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 67,104评论 1 291
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 108,297评论 0 243
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 43,869评论 0 204
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,275评论 3 287
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,563评论 1 216
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,833评论 2 312
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,543评论 0 197
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,245评论 1 241
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,512评论 2 244
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,011评论 1 258
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,359评论 2 253
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 33,006评论 3 235
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,062评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,825评论 0 194
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,590评论 2 273
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,501评论 2 268

推荐阅读更多精彩内容

  • 1. Java基础部分 基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语...
    子非鱼_t_阅读 31,293评论 18 399
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,099评论 18 139
  • 本文包括:1、Filter简介2、Filter是如何实现拦截的?3、Filter开发入门4、Filter的生命周期...
    廖少少阅读 7,145评论 3 56
  • 一直没有专门写过我的先生,有很多原因。比如,我们本来就是经人介绍认识,婚后五年,也就是近两年在一起。再比如,先生本...
    砖儿zr阅读 175评论 7 4
  • 最近就是特别不想写日志那种。一方面是觉得自己写的东西其实挺无聊,都挺没意义。二方面是,不知道写什么。貌似平时能写的...
    alabiubiubiu阅读 421评论 0 2