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'));

}

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

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