JSP中cookie的使用方法(用户登入_客户端读取及发送)

来源:互联网 发布:爱淘宝1元红包怎么领 编辑:程序博客网 时间:2024/06/02 10:32

JSP中cookie的使用方法(用户登入_客户端读取及发送):

 

一、向客户程序发送cookie

1、 创建cookie对象

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

2、 设置最大时效

    默认该cookie是存储在浏览器的内在中,用户关闭浏览器则被删除,下面的方法是将cookie存储在硬盘上。     c.setMaxAge(60*60*24);    //一天,如果设置为0则是删除该cookie

3、向客户端添加Cookie

    将cookie放入到HTTP响应报头,可以使用HttpServletResponse的addCookie方法,此方法不修改之前指定    的Set-Cookie头信息,而是创建新的头信息。
    response.addCookie(c);
    注意:设置cookie的步骤为创建cookie对象,设置最大时效,将cookie放入响应头信息,即发送到客户程序。


二、从客户端读取cookie

 

1、 获取Cookie数组

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

 

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

 

    Cookie[] cookies = request.getCookies();
        if(cookies != null){
            for(int i=0;i <cookies.length;i++){
             Cookie c = cookies[i];
             if(“userId”.equals(c.getName())){
                 System.out.println(c.getValue());
              }
            }
    }


三、使用Cookie记录访问数

 

1.用户第一次访问网页时的操作

     ...
    out.println("你是第1 次登录该网页。在此之前没有相关Cookie信息。");   //打印登录信息
    cookie=newCookie("accpCount", "1");      //Cookie对象,并设置名称与值
    cookie.setMaxAge(60*60*24);      //设置最长保留时间为1天
    response.addCookie(cookie);      //添加到响应头信息,返回到客户端
    ...

2.用户非第一次访问网页时的操作

      ...
    Cookie[] cookies =request.getCookies();     //从request对象中获取客户端Cookie信息

    int count = 0;         //初始访问次数为0
    Cookie cookie=null;     //定义Cookie对象

    if (cookies != null) {     //判断request对象中是否存在Cookie信息
         for (int i = 0; i <cookies.length; i++) {     //使用for循环遍历Cookie数组
             cookie = cookies[i];     //获取数组元素

             if("accpCount".equals(cookie.getName())) {     //判断Cookie的名称是否为"accpCount"
                 count =Integer.parseInt(cookie.getValue())+1;    //如果相等,加1
                cookie.setValue(count+"");     //重新设置Cookie对象的value值
                cookie.setMaxAge(60*60*24);     //设置保留最长时间
                 response.addCookie(cookie);     //返回到客户端
                 out.println("你是第"+ count + "次登录该网页。");
              
                break;
              }
          }
    }
    ...

3.完整的使用Cookie对象获取客户Cookie数据,并通过Cookie名称取出相应的值,在页面上显示登录次数

    ...
    public void doPost(HttpServletRequestrequest, HttpServletResponse response)
     throws ServletException, IOException{

        response.setContentType("text/html;charset=gb2312");
         PrintWriter out =response.getWriter();
         out .println("");
         out.println("");
         out.println(" ");
         out.println(" ");

         Cookie[] cookies =request.getCookies();

         int count = 0;
         boolean bool=true;
         Cookie cookie=null;

         if (cookies != null) {
             for (int i = 0; i < cookies.length;i++) {
                 cookie = cookies[i];

                 if("accpCount".equals(cookie.getName())) {
                     count =Integer.parseInt(cookie.getValue())+1;
                     cookie.setValue(count+"");
                    cookie.setMaxAge(60*60*24);
                    response.addCookie(cookie);
                     out.println("你是第"+ count + "次登录该网页。");

                    bool=false;
                    break;
                  }
              }
             }
             if(bool){
                 out.println("你是第1 次登录该网页。在此之前没有相关Cookie信息。");
                 cookie=newCookie("accpCount", "1");
                cookie.setMaxAge(60*60*24);
                response.addCookie(cookie);
             }

             out.println(" ");
             out.println("");
             out.flush();
             out.close();
        }
        ...

4.运行效果图

 

 

四、使用Cookie记录用户名和密码

 

一、用户登录操作

     在用户填写登录数据后,提交表单进行登录验证,如果用户名和密码正确,则把用户名和密码保存在客户端。页面如图1所示。

 
图1 保存Cookie信息的登录页面

         实现代码如下所示。
         ...
     response.setContentType("text/html;charset=gbk");
         //获取用户名
         String userName = request.getParameter("username");
         //获取用户密码
         String password =request.getParameter("password");

         //验证用户是否合法
         if("accp".equals(userName) &&"accp".equals(password)) {
                   //如果合法,把用户名和密码保存在客户端Cookie中

                    //获取客户选择的Cookie保存时间
                    String cookieDate =request.getParameter("cookieDate");
                   int date = 0;

                   if (cookieDate != null&& cookieDate != "")
                             date =Integer.parseInt(cookieDate);

                   //创建用户名Cookie对象
                   Cookie cookieName =new Cookie("accpLoginName", userName);
                    //设置Cookie保存时间
                  cookieName.setMaxAge(date);
                   //添加到客户端
                   response.addCookie(cookieName);

                   //创建用户密码Cookie对象
                   Cookie cookiePass =new Cookie("accpLoginPass", password);
                   //设置保存Cookie时间
                   cookiePass.setMaxAge(date);
                    //添加到客户端
                  response.addCookie(cookiePass);

                   response.sendRedirect("success.jsp");
         } else {
                   response.sendRedirect("fail.jsp");
         }
         ...


二、用户再次登录时操作

     服务器首先读取客户端Cookie信息,如果存在用户名和密码数据,则直接登录,否则显示登录页面。
         实现代码如下所示。

        response.setContentType("text/html;charset=gbk");
         //用户名和密码是否存在以及合法的判断参数
         boolean bool=false;
         //获取客户端Cookie数组
        Cookie[] cookies =request.getCookies();

         //判断客户端是否存在Cookie对象
        if (cookies != null) {
                  //预定义保存用户名和密码的变量

                   String userName ="";
                   String password ="";
                  //遍历Cookie数组

                for (int i = 0; i <cookies.length; i++) {
                            //取得每一个Cookie对象
                           Cookie cookie= cookies[i];
                          //判断Cookie的名称是否等于"accpLoginName"
                          if("accpLoginName".equals(cookie.getName())) {
                                  userName = cookie.getValue();
                           }                  

                          //判断Cookie的名称是否等于"accpLoginPass"
                         if("accpLoginPass".equals(cookie.getName())) {
                                  password = cookie.getValue();
                          }
                   }
                 //判断用户名和密码是否合法
                 if("accp".equals(userName) &&"accp".equals(password))
                          bool=true;
                  }

                //判断对客户端的Cookie的操作是否成功,成功则显示登录成功后的页面,
                 //否则,重定向到登录页面
                 if(bool)
                        response.sendRedirect("success.jsp");
                 else
                         response.sendRedirect("login.jsp");

js设置Cookie

//页面测试:

 

<script type="text/javascript"src="/theme/js/mycenter/jquery.pack.js"></script>

<script type="text/javascript"

 src="http://192.168.190.140:8088/sfbm/theme/js/collect/visit.js?cID=${param.u}"

 charset="UTF-8">

 </script>

 

 

 

 

$(function(){//(暂时不区分多个用户的情况)

       varparams = getParams();

       varvcID = params['cID'];//代码ID

       if(vcID)

       {

              varcd = new Date().getTime();

              $.get("http://localhost:8088/sfbm/collect/visit.action",{"cID": vcID, t: cd});//记录visit

              //varrID = getCookie("clct_vst_rID");//行为ID

              varfDt = getCookie("clct_vst_fDt");//首次访问时间

              if(fDt== undefined || fDt == null)

              {

              //     setCookie("clct_vst_rID", cd,30);//行为ID

                     setCookie("clct_vst_fDt",cd, 30);//首次访问时间

                     setCookie("clct_vst_cID",vcID, 30);//访问的产品ID

              }else{

                    

                     //更新有效时间

              //     setCookie("clct_vst_rID", rID,30);//行为ID

                     setCookie("clct_vst_fDt",fDt, 30);//首次访问时间

                     setCookie("clct_vst_cID",vcID, 30);//访问的产品ID

              }

       }

      

       functiongetParams()

       {

              varsc=document.getElementsByTagName('script');

           var paramsArr=sc[sc.length-1].src.split('?')[1].split('&');

           var args={}, argsStr=[], param, t, name,value;

           for(var i=0, len=paramsArr.length;i<len; i++){

                 

                   param=paramsArr[i].split('=');

                   name=param[0], value=param[1];

                  

                   if(typeof args[name]=="undefined"){//参数尚不存在

                         

                       args[name]=value;

                   }else if(typeofargs[name]=="string"){ //参数已经存在则保存为数组

                         

                       args[name]=[args[name]]

                       args[name].push(value);

                   }else{  //已经是数组的

                         

                       args[name].push(value);

                   }

           }

           return args;

       }

 

       //写cookies

       functionsetCookie(name, value, days)

       {

              if(days== undefined){

                     document.cookie= name + "=" + escape(value);

              }else{

                     varexp = new Date();

                     exp.setTime(exp.getTime()+ days*24*60*60*1000);

                     document.cookie= name + "="+ escape(value) + ";expires=" +exp.toGMTString();

              }

       }

 

       //读取cookies

       functiongetCookie(name)

       {

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

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

           {

                  returnunescape(arr[2]);

           }

           else

           {   

                  returnnull;

           }

       }

      

});

1:在客户端将用户的信息放入到Cookie中

 

String cookieName="Sender";

Cookie cookie=new Cookie(cookieName,"Test_Content"); // 创建一个Cookie对象

cookie.setMaxAge(10);

response.addCookie(cookie);

 

2:从Cookie中取到用户的信息和sessionID

 

// 得到sessionID

       StringsessionID = request.getSession(true).getId(); // 从session中得到 JSESSIONID

       System.out.println("sessionID --->"+sessionID);

      

      

// 从cookie中得到JSESSIONID  值 

       Cookiecookies[] = request.getCookies();

       if(cookies!=null){

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

                     Cookiecookie = cookies[i];

                        System.out.println(cookie.getName()+"--->"+cookie.getValue());

           }

       }


0 0
原创粉丝点击