把困難踩在腳下

          迎難而上

           

          Java cookie的使用

          1.cookie是什么?

          cookie是web應用當中非常常用的一種技術,用于儲存某些特定的用戶信息。

          2.cookie的作用?

          在用戶登陸時將用戶的信息存放在cookie中,用戶在一定的時間中再次登陸時不需要輸入用戶名和密碼直接跳轉到下一個界面。

          3.設置cookie

          Cookie cookie = new Cookie("key", "value");

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

          生存周期默認時間為秒,如果設置為負值的話,則為瀏覽器進程Cookie(內存中保存),關閉瀏覽器就失效。

          cookie.setPath("/test/test2");

          設置Cookie路徑,不設置的話為當前路徑(對于Servlet來說為request.getContextPath() + web.xml里配置的該Servlet的url-pattern路徑部分) 。

          response.addCookie(cookie);

          4.讀取cookie

          該方法可以讀取當前路徑以及“直接父路徑”的所有Cookie對象,如果沒有任何Cookie的話,則返回null。如果設置了路徑使用這個方法也沒有值。

          Cookie[] cookies = request.getCookies();

          5.刪除cookie

          Cookie cookie = new Cookie("key", null);

          cookie.setMaxAge(0);

          設置為0為立即刪除該Cookie;

          cookie.setPath("/test/test2");

          刪除指定路徑上的Cookie,不設置該路徑,默認為刪除當前路徑Cookie;

          response.addCookie(cookie);

          下面看一個例子,這是模擬126郵箱登陸的小功能。建立一個名為AutoLoginFilter的project,包結構如下:

          bao

          project下有三個java文件、兩個jsp還有個html,

          CheckLogin.java代碼如下:

           

          public class CheckLogin 

               
          public static boolean login(String username, String password) {   
                      
          if ("admin".equals(username) && "123456".equals(password)) {   
                          
          return true;   
                      }
           else {   
                          
          return false;   
                      }
             
                  }
             

          }
           

          IndexFilter.java代碼如下:

           

          package com.bx.course;
          /**
          * Filter可以實現對請求的過濾和重定向等,也就是說可以操作request和response,session等對象,listner只能監聽到以上對象的屬性的修改。
          */
           

          import java.io.IOException;   
          import javax.servlet.Filter;   
          import javax.servlet.FilterChain;   
          import javax.servlet.FilterConfig;   
          import javax.servlet.ServletException;   
          import javax.servlet.ServletRequest;   
          import javax.servlet.ServletResponse;   
          import javax.servlet.http.Cookie;   
          import javax.servlet.http.HttpServletRequest;   
          import javax.servlet.http.HttpServletResponse;   
          public class IndexFilter implements Filter {   
              
          public void destroy() {   
                  
          // TODO Auto-generated method stub   
              }
             
              
          public void doFilter(ServletRequest arg0, ServletResponse arg1,   
                      FilterChain arg2) 
          throws IOException, ServletException 
                  System.out.println(
          "every request pass here haha");
                  HttpServletRequest request 
          = (HttpServletRequest) arg0;   
                  HttpServletResponse response 
          = (HttpServletResponse) arg1;   
                  Cookie[] cookies 
          = request.getCookies();  
          //        Cookie cookie = new Cookie("user",null);
          //        cookie.setMaxAge(0);
          //        response.addCookie(cookie);
                  String[] cooks = null;   
                  String username 
          = null;   
                  String password 
          = null
                  
          if (cookies != null{   
                      
          for (Cookie coo : cookies) {   
                          String aa 
          = coo.getValue(); 
                          System.out.println(
          "1");
                          cooks 
          = aa.split("==");   
                          
          if (cooks.length == 2{
                              System.out.println(cooks[
          0]+cooks[1]);
                              username 
          = cooks[0];   
                              password 
          = cooks[1];   
                          }
             
                      }
             
                  }
           
                  System.out.println(
          "cookie username | " + username);
                  System.out.println(
          "cookie password | " + password);
                  
          if (CheckLogin.login(username, password)) {
                      System.err.println(
          "check successfully cookie data ");
                      request.getSession().setAttribute(
          "username",username);   
                      request.getRequestDispatcher(
          "/main126.jsp").forward(request, response);
                  }
          else{   
                      arg2.doFilter(request,response );   
                  }
             
              }
             
              
          public void init(FilterConfig arg0) throws ServletException {   
                  
          // TODO Auto-generated method stub   
              }
             
          }
           

          LoginServlet.java代碼如下:

           

          package com.bx.course;
          import java.io.IOException;   

          import javax.servlet.ServletException;   
          import javax.servlet.http.Cookie;   
          import javax.servlet.http.HttpServlet;   
          import javax.servlet.http.HttpServletRequest;   
          import javax.servlet.http.HttpServletResponse;   
          public class LoginServlet extends HttpServlet {   
              
          public void doGet(HttpServletRequest request, HttpServletResponse response)   
                      
          throws ServletException, IOException {   
                  
          this.doPost(request, response);   
              }
             
              
          public void doPost(HttpServletRequest request, HttpServletResponse response)   
                      
          throws ServletException, IOException {   
                     String username
          =request.getParameter("username");   
                     String password
          =request.getParameter("password");   
                     String savetime
          =request.getParameter("saveTime"); 
                     System.out.println(
          "usrename  "+username+"  password "+password);
                     
          if(CheckLogin.login(username, password)){   
                         
          if(null!=savetime){   
                             
          int saveTime=Integer.parseInt(savetime);//這里接受的表單值為天來計算的   
                             int seconds=saveTime*24*60*60;   
                             Cookie cookie 
          = new Cookie("user", username+"=="+password); 
                             cookie.setMaxAge(seconds);                      
                             response.addCookie(cookie);   
                         }
             
                         request.setAttribute(
          "username",username);   
                         request.getRequestDispatcher(
          "/main126.jsp").forward(request,response);   
                     }
          else{   
                         request.getRequestDispatcher(
          "/failure.jsp").forward(request,response);   
                     }
             
              }
             
          }
             

          web.xml配置文件代碼如下:

           

          <filter>
                  
          <filter-name>loginFilter</filter-name>
                  
          <filter-class>com.bx.course.IndexFilter</filter-class>
              
          </filter>
              
          <filter-mapping>
                  
          <filter-name>loginFilter</filter-name>
                  
          <url-pattern>/login.html</url-pattern>
              
          </filter-mapping>
              
          <servlet>
                  
          <servlet-name>LoginServlet</servlet-name>
                  
          <servlet-class>com.bx.course.LoginServlet</servlet-class>
              
          </servlet> 

              
          <servlet-mapping>
                  
          <servlet-name>LoginServlet</servlet-name>
                  
          <url-pattern>/login.do</url-pattern>
              
          </servlet-mapping>
              
          <welcome-file-list>
                  
          <welcome-file>login.html</welcome-file>
              
          </welcome-file-list> 

              
          <welcome-file-list>
                  
          <welcome-file>main126.jsp</welcome-file>
              
          </welcome-file-list> 

          login.html代碼如下:

           

          <html>  
            
          <head>  
            
          </head>  
            
          <body>  
            
          <form action="login.do">  
              126郵箱登錄
          <br/><br/>
                     用戶名:
          <input type="text" name="username" ><br/>  
                     密    碼:
          <input type="text" name="password" ><br/>  
             
          <select name="saveTime">  
                  
          <option value="366">一年</option>  
                  
          <option value="183">半年</option>  
                  
          <option value="30">一個月</option>    
                  
          <option value="7">一周</option>  
             
          </select><br/>  
             
          <input type="submit" value="登錄" />
            
          </form>  
            
          </body>  
          </html>  

          main126.jsp代碼如下:

           

          <html>  
            
          <head>  
               
          <title>測試cookie</title>  
            
          </head>  
            
          <body>  
                   
          <h2>登錄成功,歡迎${username}的到來 126郵箱</h2><br/>
                   
          <h3>測試cookie的功能
            
          </body>  
          </html>  

          failure.jsp代碼如下:

           

          <body>
              Login failure 
          <br>
            
          </body>

           

          運行效果:

          在IE地址欄中輸入http://localhost:8080/LoginFilter/login.html

          顯示如下界面:

          2

          輸入用戶名:admin    密碼:123456 選擇保存時間,然后點擊登陸,就會進入以下界面:

          3

           

          在保存時間內再次在IE地址欄中輸入:http://localhost:8080/LoginFilter/login.html

          就會直接進入登陸成功界面。如果用戶名或密碼不正確則會進入以下界面:

          4

          posted on 2011-01-21 16:46 馮魁 閱讀(24366) 評論(4)  編輯  收藏

          評論

          # re: Java cookie的使用 2014-04-29 15:09 發的

          都是法國的雙方各   回復  更多評論   

          # re: Java cookie的使用 2016-05-14 17:26 急急急

          樓主 刪除cookie 老是刪除不了怎么辦?就是以你程序代碼  回復  更多評論   

          # re: Java cookie的使用 2016-05-14 17:29 急急急

          不管是刪除已知(單個)還是全部刪除,都不行,各種都試了。刪除了還是能讀到,就算強制value改了還是能讀到正確的,希望你給看看支支招  回復  更多評論   

          # re: Java cookie的使用 2016-05-14 17:31 急急急

          Cookie cookie = new Cookie("user",null);
          cookie.setMaxAge(0);
          response.addCookie(cookie);
          放在logout.jsp,基本就是思路。但是沒效果,一點擊登錄頁面直接讀取cookie到主頁面了  回復  更多評論   


          只有注冊用戶登錄后才能發表評論。


          網站導航:
           

          導航

          統計

          公告

          快樂每一天!

          Everything is an object!

          常用鏈接

          留言簿(2)

          隨筆檔案

          學習網站

          搜索

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 余干县| 定襄县| 阳原县| 嫩江县| 宽甸| 阜阳市| 礼泉县| 蓬安县| 贡山| 玉溪市| 六安市| 饶河县| 定襄县| 开远市| 宁阳县| 武宁县| 昌图县| 绿春县| 巩义市| 鄂温| 凤凰县| 休宁县| 屏山县| 怀来县| 巴林左旗| 文成县| 江门市| 疏勒县| 嘉善县| 鄂托克前旗| 三江| 宜兴市| 溧阳市| 新巴尔虎左旗| 邵阳市| 南靖县| 宝清县| 吐鲁番市| 噶尔县| 稻城县| 南昌县|