cookie的使用

   Cookie


•  Cookie是客户端技术,服务器把每个用户的数据以cookie的形式写给用户各自的浏览器。当用户使用浏览器再去访问服务器中的web资源时,就会带着各自的数据去。这样,web资源处理的就是用户各自的数据了。

  javax.servlet.http.Cookie类用于创建一个Cookie,response接口也中定义了一个addCookie方法,它用于在其响应头中增加一个相应的Set-Cookie头字段。 同样,request接口中也定义了一个getCookies方法,它用于获取客户端提交的Cookie。Cookie类的方法:

•  publicCookie(String name,String value)

•  setValue与getValue方法

•  setMaxAge与getMaxAge方法

•  setPath与getPath方法

•  getName方法

  显示用户上次访问时间

•  Cookie.setMaxAge(7*24*60*60)

•  Cookie.setPath(“/day0X”);

  Httpwatch观察

•  Cookie.setMaxAge(0)删除同名Cookie

 一个Cookie只能标识一种信息,它至少含有一个标识该信息的名称(NAME)和设置值(VALUE)。

  一个WEB站点可以给一个WEB浏览器发送多个Cookie,一个WEB浏览器也可以存储多个WEB站点提供的Cookie。

 浏览器一般只允许存放300个Cookie,每个站点最多存放20个Cookie,每个Cookie的大小限制为4KB。

 如果创建了一个cookie,并将他发送到浏览器,默认情况下它是一个会话级别的cookie(即存储在浏览器的内存中),用户退出浏览器之后即被删除。若希望浏览器将该cookie存储在磁盘上,则需要使用maxAge,并给出一个以秒为单位的时间。将最大时效设为0则是命令浏览器删除该cookie。

  注意,删除cookie时,path必须一致,否则不会删除publicvoiddoGet(HttpServletRequest request, HttpServletResponseresponse)throws ServletException, IOException {

      Stringname = request.getParameter("name");

      if(name==null){

         name="default";

      }

     

      //取得客户端的所有Cookie的值

      Cookie[]cookies = request.getCookies();

      if(cookies==null){

         Cookiecookie =newCookie("name_"+name,System.currentTimeMillis()+"");

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

         response.addCookie(cookie);

         response.setContentType("text/html;charset=UTF-8");

         response.getWriter().write("欢迎"+name+"首次光临,访问时间:" + newDate().toLocaleString());

      }else{

         //查找名为nameCookie

         CookienameCookie =null;

         for(Cookie c : cookies){

            if(c.getName().equals("name_"+name)){

                nameCookie= c;

                break;

            }

         }

         //找到了

         if(nameCookie!=null){

            StringstrTime = nameCookie.getValue();

            response.setContentType("text/html;charset=UTF-8");

            long lastTime = Long.parseLong(strTime);

            response.getWriter().write("欢迎"+name+"再次光临,你上次访问时间:" + newDate(lastTime).toLocaleString());

            //更新时间

            Cookiecookie =newCookie("name_"+name,System.currentTimeMillis()+"");

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

            response.addCookie(cookie);

         }

      }

   }

 

publicvoiddoGet(HttpServletRequest request, HttpServletResponse response)throws ServletException,IOException {

      Stringname = request.getParameter("name");

      if(name==null){

         name="default";

      }

     

      //取得客户端的所有Cookie的值

      Cookie[]cookies = request.getCookies();

      if(cookies==null){

         Cookiecookie =newCookie("name_"+name,System.currentTimeMillis()+"");

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

         response.addCookie(cookie);

         response.setContentType("text/html;charset=UTF-8");

         response.getWriter().write("欢迎"+name+"首次光临,访问时间:" + newDate().toLocaleString());

      }else{

         //查找名为nameCookie

         CookienameCookie =null;

         for(Cookie c : cookies){

            if(c.getName().equals("name_"+name)){

                nameCookie= c;

                break;

            }

         }

         //找到了

         if(nameCookie!=null){

            StringstrTime = nameCookie.getValue();

            response.setContentType("text/html;charset=UTF-8");

            long lastTime = Long.parseLong(strTime);

            response.getWriter().write("欢迎"+name+"再次光临,你上次访问时间:" + newDate(lastTime).toLocaleString());

            //更新时间

            Cookiecookie =newCookie("name_"+name,System.currentTimeMillis()+"");

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

            response.addCookie(cookie);

         }

      }

   }

<%

   //获取cookie

   StringuserName=null;

   Stringpassword=null;

  

   Cookie[]cookies = request.getCookies();

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

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

           userName = cookies[i].getValue().split("-")[0];

           password = cookies[i].getValue().split("-")[1];

        }

   }

    

   if(userName ==null){

      userName="";

   }

   if(password ==null){

      password="";

   }

%>

<divclass="container">

     <formname="myForm"class="form-signin"action="login"method="post"onsubmit="return checkForm()">

        <h2class="form-signin-heading">cookie的使用</h2>

        <inputid="userName"name="userName"value="<%= userName%>"type="text"class="input-block-level"placeholder="屌丝名...">

        <inputid="password"name="password"value="<%= password%>" type="password"class="input-block-level"placeholder="屌丝码..."onkeydown= "if(event.keyCode==13)myForm.submit()">

        <labelclass="checkbox">

          <inputid="remember"name="remember"type="checkbox"value="remember-me">记住我&nbsp;&nbsp;&nbsp;&nbsp;<fontid="error"color="red">${error }</font> 

        </label>

        <buttonclass="btn btn-largebtn-primary"type="submit">登录</button>

        &nbsp;&nbsp;&nbsp;&nbsp;

        <buttonclass="btn btn-largebtn-primary"type="button"onclick="resultValue()">重置</button>

 

<palign="center"style="padding-top:15px;">版权所有 2014 Java知识分享网 <a href="http://blog.csdn.net/u012750578"target="_blank">http://blog.csdn.net/u012750578</a></p>

     </form>

</div>

 

 

@Override

   protectedvoiddoPost(HttpServletRequest request, HttpServletResponse response)

         throws ServletException,IOException {

      //获取Session

      HttpSessionsession=request.getSession();

      StringuserName=request.getParameter("userName");

      Stringpassword=request.getParameter("password");

      Stringremember=request.getParameter("remember");

      Connectioncon=null;

      try {

         Useruser=newUser(userName,MD5Util.EncoderPwdByMd5(password));

         con=dbUtil.getCon();

         UsercurrentUser=userDao.login(con,user);

         if(currentUser==null){

            request.setAttribute("error","用户名或密码错误!");

            request.setAttribute("userName",userName);

            request.setAttribute("password",password);

            //服务器跳转

            request.getRequestDispatcher("login.jsp").forward(request,response);

         }else{

            //如果点击记住我,则进行cookie缓存

            if("remember-me".equals(remember)){

                rememberMe(userName,password,response);

            }

            session.setAttribute("currentUser",currentUser);

            request.getRequestDispatcher("main").forward(request,response);

         }

      }catch(Exception e) {

         e.printStackTrace();

      }finally{

         try {

            dbUtil.closeCon(con);

         }catch(Exception e) {

            e.printStackTrace();

         }

      }

   }

   /**

    *记住我 cookie缓存,cookie是客户端对象

    *@param userName

    *@param password

    *@param response

    */

   privatevoid rememberMe(StringuserName,String password,HttpServletResponse response){

      Cookieuser =newCookie("user",userName +"-"+ password);

      user.setMaxAge(60*60*60*24*7);

      response.addCookie(user);

   }

  

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值