Cookie的使用

 Cookie由服务器端生成,发送给客户端浏览器,浏览器会将其保存成某个目录下的文本文件。

Cookie的工作原理:

      当用户在浏览网站时,Web服务器会将一些资料存放在客户端,这些资料
     包括用户在浏览网站期间输入的文字或一些选择记录。当用户下一次访问
     该网站的时候,服务器会从客户端查看是否有保留下来的Cookie信息,
         然后依据Cookie的内容,呈现特定的页面内容给用户。

Cookie与session的比较:
   Session是在服务器端保存用户信息,Cookie是在客户端保存用户信息。
   Session中保存的是对象,Cookie保存的是字符串。
   Session对象随会话结束而失效,Cookie可以长期保存在客户端。
   Cookie通常用于保存不重要的用户信息,重要的信息使用session保存。

Cookie的应用:

   在JSP使用Cookie的步骤:
      1.在一个JSP页面创建Cookie对象
        Cookie cookie=new Cookie("user",URLEncoder.encode(username,"UTF-8"));
      2.写入Cookie
        cookie.setMaxAge(60*60);//有效期
        response.addCookie(cookie);//服务器发出的方法所以用response
      3.在另一个JSP页面读取Cookie
         Cookie[] cookies=request.getCookies();
               String user="";
                 for(int i=0;i<cookies.length;i++){
                  if(cookies[i].getName().equals("user")){
                    user=URLDecoder.decode(cookies[i].getValue(),"UTF-8");
                 }
               }

    示列:

        在另一个JSP页面读取Cookie,写入Cookie。

  

<%
request.setCharacterEncoding("UTF-8");
String username=request.getParameter("username");
String password=request.getParameter("password");
if(username.equals("系统管理员") && password.equals("123")){
    Cookie cookie=new Cookie("user",URLEncoder.encode(username,"UTF-8"));
    cookie.setMaxAge(60*60);
    response.addCookie(cookie);
    session.setAttribute("user",username);
    response.sendRedirect("index.jsp");
    //out.print("恭喜你,登录成功!<br/>");
    //out.print("用户名:" + username + "<br/>");
    //out.print("密码:" + password + "<br/>");
}else{
    request.setAttribute("message", "登录失败,用户名或密码输入不正确!");
    request.getRequestDispatcher("userLogin.jsp").forward(request, response);
}

%>

     在另一个JSP页面读取Cookie。

       <%
            Cookie[] cookies=request.getCookies();
            String user="";
            for(int i=0;i<cookies.length;i++){
                if(cookies[i].getName().equals("user")){
                    user = URLDecoder.decode(cookies[i].getValue(),"UTF-8");
                }
            }
            Object o=session.getAttribute("user");
            if(o==null){
                //显示用户名密码,可以在此登录
            %>                
                <label>用户名</label>
          <input type="text" name="username"
          value="<%=user%>"/><label>密码</label>
          <input type="text" name="password" />
          <button>登录</button> <% }else{ //显示“欢迎你,XXX” out.print("欢迎你,"+o.toString()); %> &nbsp;<a href="userLogout.jsp">注销</a> <% } %>

      

原文地址:https://www.cnblogs.com/fifiyong/p/5931343.html