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 (
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資料"); } } }