1. 程式人生 > >javaweb基礎第二十課:cookie

javaweb基礎第二十課:cookie

大綱:

  1. 簡介
  2. 使用Cookie
    1. 設定Cookie
    2. 讀取Cookie
    3. Cookie有效時間
    4. Cookie路徑

 

  這節課我們來講Cookie,大綱寫好了

 

  1. 簡介

Cookie 是儲存在客戶端計算機上的文字檔案,並保留了各種跟蹤資訊。

更準確的說,是瀏覽器軟體在本地儲存的資訊.

比如說,chrome瀏覽器是一個軟體,大家要使用這個軟體必須先下載安裝,cookie就是這個軟體儲存的一些資訊。

 

  1. 使用Cookie
    1. 設定Cookie
      • 構造cookie物件
      • 新增到response中
    2. 獲取Cookie

通過request獲取

    1. Cookie有效時間

就是Cookie的過期時間,當過期時間過了cookie就會被刪掉

可以通過cookie.setMaxAge(int expiry)方法設定過期時間,單位是秒

引數說明:
    若引數為0,表示立即失效

                       若引數為正,表示expiry秒後失效

若引數為負,表示一次會話結束後失效(瀏覽器關閉或瀏覽器清空快取)

    1. Cookie路徑

表示那些請求被髮起時要攜帶該cookie

也就是那些請求被髮起時可以通過req獲取到該Cookie

可通過cookie.setPath()來設定

預設是專案根路徑

 

CookieTeachServlet.java

package com.servlet;



import javax.servlet.ServletException;

import javax.servlet.http.Cookie;

import 
javax.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>