javaweb基礎第二十課:cookie
阿新 • • 發佈:2019-01-13
大綱:
- 簡介
- 使用Cookie
- 設定Cookie
- 讀取Cookie
- Cookie有效時間
- Cookie路徑
這節課我們來講Cookie,大綱寫好了
- 簡介
Cookie 是儲存在客戶端計算機上的文字檔案,並保留了各種跟蹤資訊。
更準確的說,是瀏覽器軟體在本地儲存的資訊.
比如說,chrome瀏覽器是一個軟體,大家要使用這個軟體必須先下載安裝,cookie就是這個軟體儲存的一些資訊。
- 使用Cookie
- 設定Cookie
- 構造cookie物件
- 新增到response中
- 獲取Cookie
- 設定Cookie
通過request獲取
-
- Cookie有效時間
就是Cookie的過期時間,當過期時間過了cookie就會被刪掉
可以通過cookie.setMaxAge(int expiry)方法設定過期時間,單位是秒
引數說明:
若引數為0,表示立即失效
若引數為正,表示expiry秒後失效
若引數為負,表示一次會話結束後失效(瀏覽器關閉或瀏覽器清空快取)
-
- Cookie路徑
表示那些請求被髮起時要攜帶該cookie
也就是那些請求被髮起時可以通過req獲取到該Cookie
可通過cookie.setPath()來設定
預設是專案根路徑
CookieTeachServlet.java
package com.servlet; import javax.servlet.ServletException; import javax.servlet.http.Cookie; importjavax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.io.IOException; //Cookie教學Servlet public class CookieTeachServlet extends HttpServlet { @Override protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { String url = req.getRequestURL().toString(); if (url.endsWith("/cookie/set")) { setCookie(resp); } if (url.indexOf("/cookie/get") > 0) getCookie(req); } private void getCookie(HttpServletRequest req) { //通過request獲取cookie Cookie[] cookies = req.getCookies(); for (Cookie cookie1 : cookies) { System.out.println(cookie1.getName() + ": " + cookie1.getValue()); } /* id: 1001 Webstorm-7d175dab: 3d609cdc-d57b-4c10-8eb3-c728ffb5425b Hm_lvt_080836300300be57b7f34f4b3e97d911: 1544144252 id: 1001 JSESSIONID: F2CEF3BC6E7BA69465DC00EEF2379A0B 上面這些都是Cookie裡的資訊,也就是說/cookie/get這個請求裡呆了5條cookie */ } private void setCookie(HttpServletResponse resp) { //構造cookie物件 /** * Cookie的構造器如下 * public Cookie(String name, String value); */ Cookie cookie = new Cookie("id","1001"); // cookie.setMaxAge(10); //10秒後過期 cookie.setPath("/cookie/get/1"); /* Webstorm-7d175dab: 3d609cdc-d57b-4c10-8eb3-c728ffb5425b Hm_lvt_080836300300be57b7f34f4b3e97d911: 1544144252 id: 1001 JSESSIONID: 3A33CF0BC08416BBE26D75D8C42ED04C 5條變4條,顯然少了一條 */ //新增到response中 resp.addCookie(cookie); //新增完後會在響應頭資訊里加一行 Set-Cookie: id=1001 } /* /cookie/get/1的cookie id: 1001 Webstorm-7d175dab: 3d609cdc-d57b-4c10-8eb3-c728ffb5425b Hm_lvt_080836300300be57b7f34f4b3e97d911: 1544144252 id: 1001 JSESSIONID: 6143489039E0A06E778F47DA85827854 /cookie/get/2的cookie Webstorm-7d175dab: 3d609cdc-d57b-4c10-8eb3-c728ffb5425b Hm_lvt_080836300300be57b7f34f4b3e97d911: 1544144252 id: 1001 JSESSIONID: 6143489039E0A06E778F47DA85827854 顯然2比1少1條,就是因為/cookie/set裡的cookie設定了路徑 cookie.setPath("/cookie/get/1"); */ }
web.xml
<servlet> <servlet-name>CookieTeachServlet</servlet-name> <servlet-class>com.servlet.CookieTeachServlet</servlet-class> </servlet> <servlet-mapping> <servlet-name>CookieTeachServlet</servlet-name> <url-pattern>/cookie</url-pattern> </servlet-mapping> <servlet-mapping> <servlet-name>CookieTeachServlet</servlet-name> <url-pattern>/cookie/set</url-pattern> </servlet-mapping> <servlet-mapping> <servlet-name>CookieTeachServlet</servlet-name> <url-pattern>/cookie/get</url-pattern> </servlet-mapping> <servlet-mapping> <servlet-name>CookieTeachServlet</servlet-name> <url-pattern>/cookie/get/1</url-pattern> </servlet-mapping> <servlet-mapping> <servlet-name>CookieTeachServlet</servlet-name> <url-pattern>/cookie/get/2</url-pattern> </servlet-mapping>