一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|JAVA教程|ASP教程|

服務器之家 - 編程語言 - JAVA教程 - Java 是如何讀取和寫入瀏覽器Cookies的實例詳解

Java 是如何讀取和寫入瀏覽器Cookies的實例詳解

2020-06-17 12:02lqh JAVA教程

這篇文章主要介紹了Java 是如何讀取和寫入瀏覽器Cookies的實例的相關資料,需要的朋友可以參考下

首先我們認識下什么是cookies:

cookie實際上是一個存在你硬盤里的數據,但是這些數據很特殊,只能由web應用提交給瀏覽器幫助存儲,并且我們還能讀取瀏覽器的cookie

web應用一般只在cookie中存儲一些用戶信息等少量且暫時的數據,數據量大則不適合存儲在cookies

一般瀏覽器對于每個web應用會分別給予他們40個cookie用來存儲數據,并且每個cookie的大小不超過4K(聽說部分瀏覽器的cookie能存很大的數據,不過我們一般不會存這么大的數據,因為數據提取的效率不高,影響性能)

說了這么多廢話,然后重點終于來了

java通過httpServletRequest接口來訪問瀏覽器請求中的cookies數據(這里先了解一下cookies來龍去脈,代碼待會一并給出)

每個cookie有兩個屬性:鍵 ,值(無特定格式字符串,所以可以diy存數據,不過要注意URL編碼問題,編碼問題待會和代碼一同講)

如果我們需要存儲新的cookie我們可以new一個cookie實例 并通過httpservletRsponse提交到瀏覽器,進而存儲到本地

下面給出cookie的一個通用類

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
/*
 * 該類可以從瀏覽器請求中提取出cookies并進行對cookis的相關操作
 *
 */
 
public class CookiesUtil extends BaseController {
  
  /**
   * 根據名字獲取cookie
   *
   * @param request
   * @param name
   *      cookie名字
   * @return
   */
  public static Cookie getCookieByName(HttpServletRequest request, String name) {
    Map<String, Cookie> cookieMap = ReadCookieMap(request);
    if (cookieMap.containsKey(name)) {
      Cookie cookie = (Cookie) cookieMap.get(name);
      return cookie;
    } else {
      return null;
    }
  }
 
  /**
   * 將cookie封裝到Map里面
   *
   * @param request
   * @return
   */
  private static Map<String, Cookie> ReadCookieMap(HttpServletRequest request) {
    Map<String, Cookie> cookieMap = new HashMap<String, Cookie>();
    Cookie[] cookies = request.getCookies();
    if (null != cookies) {
      for (Cookie cookie : cookies) {
        cookieMap.put(cookie.getName(), cookie);
      }
    }
    return cookieMap;
  }
 
  /**
   * 保存Cookies
   *
   * @param response
   *      servlet請求
   * @param value
   *      保存值
   * @author jxf
   */
  public static HttpServletResponse setCookie(HttpServletResponse response, String name, String value,int time) {
    // new一個Cookie對象,鍵值對為參數
    Cookie cookie = new Cookie(name, value);
    // tomcat下多應用共享
    cookie.setPath("/");
    // 如果cookie的值中含有中文時,需要對cookie進行編碼,不然會產生亂碼
    try {
      URLEncoder.encode(value, "utf-8");
    } catch (UnsupportedEncodingException e) {
      e.printStackTrace();
    }
    cookie.setMaxAge(time);
    // 將Cookie添加到Response中,使之生效
    response.addCookie(cookie); // addCookie后,如果已經存在相同名字的cookie,則最新的覆蓋舊的cookie
    return response;
  }

有了上面的通用類我們可以讀取和新建cookie了,在這里我還要提一點:新建cookie的名字如果瀏覽器已經存在,則不再重復添加,會覆蓋之前的cookie

瀏覽器如何查看請求的cookie和返回的cookie呢?拿Google瀏覽器舉個栗子

Java 是如何讀取和寫入瀏覽器Cookies的實例詳解

然后就是我們可能需要對cookie進行刪除操作

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
/**
    * <p>刪除無效cookie</p>
    * <p>無效?1.過時 2.未發布</p>
    * @param request
    * @param response
    * @param list
    */
   private void delectCookieByName(HttpServletRequest request, HttpServletResponse response,String deleteKey) throws NullPointerException {12     Map<String, Cookie> cookieMap = ReadCookieMap(request);17     for (String key : cookieMap.keySet()) { 
       if(key==deleteKey && key.equals(deleteKey)) {
         Cookie cookie = cookieMap.get(key);21         cookie.setMaxAge(0);//設置cookie有效時間為0
         cookie.setPath("/");//不設置存儲路徑
         response.addCookie(cookie);
       }
      }
  }

注意刪除cookie必須同時具備時間和路徑的參數不然部分瀏覽器刪除不了

以上就是Java 讀取和寫入瀏覽器Cookies的資料整理,后續繼續補充相關資料,謝謝大家對本站的支持!

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 婷婷日韩 | 亚洲国产韩国欧美在线不卡 | 久久机热视频 这里只有精品首页 | 先锋资源av | 精品视频入口 | 王的视频视ivk | 亚洲AV无码国产精品色在线看 | 天堂8在线天堂资源在线 | 美女扒开胸罩露出胸大乳 | 国产精品边做边接电话在线观看 | 朝鲜美女免费一级毛片 | 日韩视频在线免费观看 | 亚洲精品动漫在线观看 | 99热精品在线免费观看 | 亚偷熟乱区视频在线观看 | 1024免费福利永久观看网站 | 青青自拍视频 | 国产91一区二区在线播放不卡 | www.亚洲天堂| 天天操天天干天天做 | 亚洲乱亚洲23p女 | 国产成人精品1024在线 | 亚洲 欧美 国产 日韩 字幕 | 亚洲国产午夜看片 | 欧美日韩免费一区二区在线观看 | 日本免费三片在线观看 | 99re思思| 亚洲天堂网站在线 | 九九九好热在线 | youjizzxxx在线观看 | 国产亚洲sss在线播放 | 我的好妈妈7中字在线观看韩国 | 韩日一区二区三区 | 99爱在线精品视频免费观看9 | 99re免费在线视频 | 调教催眠改造np总攻 | 国产成人精品免费视频软件 | 娇妻被健身教练挺进小说阅读 | 国产精品一区二区久久不卡 | 四虎永久在线精品波多野结衣 | 操尼姑|