學習日記:java操作cookie


將以往的學習筆記搬到這里來。

  

  Cookie

  Cookie是客戶端技術,程序把每個用戶的數據以cookie的形式寫給用戶各自的瀏覽器。當用戶使用瀏覽器再去訪問服務器中的web資源時,就會帶着各自的數據去。這樣,web資源處理的就是用戶各自的數據了。

   Java提供的操作Cookie的API

  Java中的javax.servlet.http.Cookie類用於創建一個Cookie

Cookie類的主要方法

No.

方法

類型

描述

1

Cookie(String name, String value)

構造方法

實例化Cookie對象,傳入cooke名稱和cookie的值

2

public String getName()

普通方法

取得Cookie的名字

3

public String getValue()

普通方法

取得Cookie的值

4

public void setValue(String newValue)

普通方法

設置Cookie的值

5

public void setMaxAge(int expiry)

普通方法

設置Cookie的最大保存時間,即cookie的有效期,當服務器給瀏覽器回送一個cookie時,如果在服務器端沒有調用setMaxAge方法設置cookie的有效期,那么cookie的有效期只在一次會話過程中有效,用戶開一個瀏覽器,點擊多個超鏈接,訪問服務器多個web資源,然后關閉瀏覽器,整個過程稱之為一次會話,當用戶關閉瀏覽器,會話就結束了,此時cookie就會失效,如果在服務器端使用setMaxAge方法設置了cookie的有效期,比如設置了30分鍾,那么當服務器把cookie發送給瀏覽器時,此時cookie就會在客戶端的硬盤上存儲30分鍾,在30分鍾內,即使瀏覽器關了,cookie依然存在,在30分鍾內,打開瀏覽器訪問服務器時,瀏覽器都會把cookie一起帶上,這樣就可以在服務器端獲取到客戶端瀏覽器傳遞過來的cookie里面的信息了,這就是cookie設置maxAge和不設置maxAge的區別,不設置maxAge,那么cookie就只在一次會話中有效,一旦用戶關閉了瀏覽器,那么cookie就沒有了,那么瀏覽器是怎么做到這一點的呢,我們啟動一個瀏覽器,就相當於啟動一個應用程序,而服務器回送的cookie首先是存在瀏覽器的緩存中的,當瀏覽器關閉時,瀏覽器的緩存自然就沒有了,所以存儲在緩存中的cookie自然就被清掉了,而如果設置了cookie的有效期,那么瀏覽器在關閉時,就會把緩存中的cookie寫到硬盤上存儲起來,這樣cookie就能夠一直存在了。

6

public int getMaxAge()

普通方法

獲取Cookies的有效期

7

public void setPath(String uri)

普通方法

設置cookie的有效路徑,比如把cookie的有效路徑設置為"/xdp",那么瀏覽器訪問"xdp"目錄下的web資源時,都會帶上cookie,再比如把cookie的有效路徑設置為"/xdp/gacl",那么瀏覽器只有在訪問"xdp"目錄下的"gacl"這個目錄里面的web資源時才會帶上cookie一起訪問,而當訪問"xdp"目錄下的web資源時,瀏覽器是不帶cookie的

8

public String getPath()

普通方法

獲取cookie的有效路徑

9

public void setDomain(String pattern)

普通方法

 設置cookie的有效域

10

public String getDomain()

普通方法

 獲取cookie的有效域

     使用例子:

      1.建立一個cookie:

HttpServletRequest request  
HttpServletResponse response
Cookie cookie = new Cookie("name","value");
response.addCookie(cookie);

      該cookie為隨着瀏覽器的關閉而消失,如果需要建立一個可以保存的cookie必須要使用setMaxAge()方法,此方法可以設置它的生命周期。如:

    

HttpServletRequest request  
HttpServletResponse response
Cookie cookie = new Cookie("name","value");
cookie.setMaxAge(3600*24*3);//設置其生命周期
response.addCookie(cookie);

      2.讀取cookie

    

HttpServletRequest req = (HttpServletRequest) request;
HttpServletResponse res =(HttpServletResponse)response;
Cookie[] cookies = req.getCookies(); //獲取cookie數組
HttpSession session = req.getSession();
for(Cookie cookie:cookies){//遍歷cookie數組
    System.out.println(cookie.getName());//獲取cookie的名字
    System.out.println(cookie.getValue()); //獲取cookie的值
}    

      3.簡單的一個實例  

      將登錄的帳號密碼存入cookie中。

protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		// TODO Auto-generated method stub
		String phone = request.getParameter("phone");
		String password = request.getParameter("password");
		String passwordMD5 = PasswordToMd5.getMD5(password);//將password加密
		HttpSession session = request.getSession();
		DbUtilQuery query = new QueryEmpForLogin(phone, password);
		ArrayList<Object> result = query.excute();
		if(result.size()!=0){
			System.out.println("登錄成功");
			Employee employee = (Employee) result.get(0);
			session.setAttribute("employee",employee);//將登錄信息設置到會話
			Cookie cookie = new Cookie("phone",phone);//將登錄信息加入cookie中
			Cookie cookie1 = new Cookie("password",password);
			cookie.setMaxAge(60*60*24*3); //設置cookie最大失效時間
              cookie1.setMaxAge(60*60*24*3); response.addCookie(cookie);//將cookie返回加入 response.addCookie(cookie1); response.sendRedirect("/Booking/Html/main.html"); }else{ //錯誤了彈出錯誤框 System.out.println("登錄失敗,帳號或者密碼錯誤"); PrintWriter out = response.getWriter();//通過servlet的doget方法獲取response對象,通過getWriter方法獲取PrintWriter對象 out.flush();//清空緩存 out.println("<script>");//輸出script標簽 out.println("alert('登錄失敗,帳號或者密碼錯誤');");//js語句:輸出alert語句 out.println("history.back();");//js語句:輸出網頁回退語句 out.println("</script>");//輸出script結尾標簽 } }

 

 

 

 

 

 

 

       


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM