1. 程式人生 > >JavaWeb 會話管理(cookie)

JavaWeb 會話管理(cookie)

Cookie原理

                                     1)伺服器建立cookie物件,把會話資料儲存到cookie物件中。

                                                        newCookie("name","value");

                                     2)  伺服器傳送cookie資訊到瀏覽器

                                                        response.addCookie(cookie);

                                               舉例: set-cookie:name=eric  (隱藏傳送了一個set-cookie名稱的響應頭)

                                     3)瀏覽器得到伺服器傳送的cookie,然後儲存在瀏覽器端。

                                     4)瀏覽器在下次訪問伺服器時,會帶著cookie資訊

                                                  舉例: cookie: name=eric (

隱藏帶著一個叫cookie名稱的請求頭)

                                     5)伺服器接收到瀏覽器帶來的cookie資訊

                                                        request.getCookies();

package first.cookie;

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 CookieDemo1 extends HttpServlet{

	@Override
	public void doGet(HttpServletRequest req, HttpServletResponse resp) 
			throws ServletException, IOException {
		
		//1.建立cookie物件
		Cookie cookie = new Cookie("name","eric");//字元型
		
		//設定Cookie的有效路徑(預設有效路徑:當前web應用下\MyWeb1)
		cookie.setPath("/MyWeb1");
		
		//設定Cookie的有效時間
		   /*正整數:表示cookie資料儲存瀏覽器的快取目錄(硬碟中),數值表示儲存的時間。
		             負整數:表示cookie資料儲存瀏覽器的記憶體中。瀏覽器關閉cookie就丟失了!!
		             零:表示刪除同名的cookie資料
		   */
		//cookie.setMaxAge(20);
		cookie.setMaxAge(-1);
		//cookie.setMaxAge(0);
		
		//2.把cookie資料傳送給瀏覽器(通過響應頭髮送:set-cookie名稱)
		resp.addCookie(cookie);
		
		
		//3.接受瀏覽器傳送的cookie資訊
		Cookie[] cookies = req.getCookies();
		if(cookies!=null){
			for(Cookie c:cookies){
				String name = c.getName();
				String value = c.getValue();
				System.out.println(name+"="+value);
			}
		}else{
			System.out.print("沒有Cookie資料");
		}
	}

}