国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

java之Cookie詳解

2019-11-15 01:11:50
字體:
來源:轉載
供稿:網友
java之Cookie詳解

Cookie是由服務器端生成,發送給User-Agent(一般是瀏覽器),瀏覽器會將Cookie的key/value保存到某個目錄下的文本文件內,下次請求同一網站時就發送該Cookie給服務器(前提是瀏覽器設置為啟用cookie)。Cookie名稱和值可以由服務器端開發自己定義,對于jsp而言也可以直接寫入JsessionID用于標記一個會話(session),這樣服務器可以知道該用戶是否合法用戶以及是否需要重新登錄等,服務器可以設置或讀取Cookies中包含信息,借此維護用戶跟服務器會話中的狀態。

Cookie是客戶端技術,而HttpSession是服務器端技術。

java中Cookie詳細介紹:

1、Cookie是什么?

  一個小信息,由服務器寫給瀏覽器的。由瀏覽器來保存。

  客戶端保存的Cookie信息,可以再次帶給服務器。

  Cookie類:javax.servlet.http.Cookie

2、Cookie的屬性:

  name:必須的

  value:必須的

  comment:可選的。注釋

  path: 可選的,如果不設置路徑,那么只有設置該cookie的URI及其子路徑可以訪問

      寫Cookie的程序的訪問路徑是:http://localhost:8080/JavaWeb/servlet/CookieDemo

      其中:localhost就是域名;/JavaWeb/servlet就是當前Cookie的path      若訪問的地址的URI包含著cookie的路徑,即URI.startWith(cookie的路徑),為true,則客戶端將該cookie帶給服務器。      比如瀏覽器存的cookie的路徑是/JavaWeb      現在訪問的地址是:http://localhost:8080/JavaWeb/servlet/CookieDemo 則帶該cookie      現在訪問的地址是:http://localhost:8080/JavaWeb/CookieDemo 則帶該cookie      若瀏覽器存的cookie的路徑是/JavaWeb/servlet/      訪問的地址是:http://localhost:8080/JavaWeb/servlet/CookieDemo 則帶該cookie      訪問的地址是:http://localhost:8080/JavaWeb/CookieDemo 則不帶該cookie      如果一個cookie的路徑設置成了/JavaWeb,意味著瀏覽器訪問當前應用下的所有資源時都會帶著該cookie給服務器。

  domain:可選的。該Cookie所屬的網站域名。(apache.org)默認值。

  maximum age:可選的。不設置就是會話過程(存在瀏覽器的內存中)。單位是秒          如果是0,說明要刪除。

  version:可選的。

3、如何向客戶端寫Cookie:

HttpServletResponse對象.addCookie(javax.servlet.http.Cookie對象)(就是寫了一個響應消息頭:Set-Cookie:cookie的信息)

Servlet規范中的Cookie API 提供了setMaxAge setPath setDomain等方法,可以對Cookie狀態進行控制

特點:一個瀏覽器針對一個網站最多存20個Cookie;最多存300個Cookie,每個Cookie的長度不能超過4KB(稀缺)。只是規定,但不同的瀏覽器實現的不同。

 1     public void doGet(HttpServletRequest request, HttpServletResponse response) 2             throws ServletException, IOException { 3         Cookie cookie=new Cookie("name","Tom"); 4         //設置Maximum Age 5         cookie.setMaxAge(1000); 6         //設置cookie路徑為當前項目路徑 7         cookie.setPath(request.getContextPath()); 8         //添加cookie 9         response.addCookie(cookie);10     }

4、服務器如何得到客戶端傳來的Cookie:

在Java中利用Serlvet或者JSP scriptlet可以向瀏覽器端寫入Cookie,同樣,利用Servet或者JSP scriptlet 也可以讀取到 Cookie信息

Servlet規范中的Cookie API同樣存在getMaxAge getPath getDomain等方法,可以獲得相應的狀態。

不過此處存在一個問題:

讀取Cookie時,發現除了Cookie的key和value外,其他值獲取都為null。

原因很簡單:Cookie從服務器端發送到客戶端時,信息是完整的,Cookie從客戶器端發送到服務端時,信息只剩下key、value了。(因為Domain不對的Cookie、Path不對的Cookie、過期的Cookie,客戶端是不會發送過來的)

那為什么Java中提供了相應的get方法呢? 那個方法其實是在生成Cookie后,尚未發送到客戶端時使用的

服務器端通過HttpServletRequest對象.getCookies()可獲取cookies數組。

 1     public void doGet(HttpServletRequest request, HttpServletResponse response) 2             throws ServletException, IOException { 3         PRintWriter out=response.getWriter(); 4         Cookie[] cookies=request.getCookies(); 5         if(cookies!=null){ 6             for(Cookie cookie:cookies){ 7                 String name=cookie.getName(); 8                 String value=cookie.getValue(); 9                 out.write(name+"="+value);10             }11         }12     }

5、如何區分Cookie:

通過名稱不行,應通過domain+path+name來區分的。


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 灵石县| 平谷区| 南平市| 拜城县| 山东| 云浮市| 社会| 金乡县| 屏东县| 平远县| 尼勒克县| 铜山县| 邵武市| 七台河市| 北碚区| 体育| 资阳市| 礼泉县| 巴中市| 平乐县| 大安市| 介休市| 兴海县| 台湾省| 措勤县| 南充市| 永安市| 斗六市| 衢州市| 汽车| 江阴市| 嘉峪关市| 云安县| 吴堡县| 望都县| 阳高县| 霍林郭勒市| 紫阳县| 四川省| 阜阳市| 东乌珠穆沁旗|