欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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

 更新時間:2016年09月20日 17:20:55   投稿:lqh  
這篇文章主要介紹了Java 是如何讀取和寫入瀏覽器Cookies的實例的相關資料,需要的朋友可以參考下

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

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

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

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

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

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

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

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

下面給出cookie的一個通用類

/*
 * 該類可以從瀏覽器請求中提取出cookies并進行對cookis的相關操作
 * 
 */

public class CookiesUtil extends BaseController {
  
  /**
   * 根據(jù)名字獲取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對象,鍵值對為參數(shù)
    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瀏覽器舉個栗子

 

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

/**
    * <p>刪除無效cookie</p>
    * <p>無效?1.過時 2.未發(fā)布</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必須同時具備時間和路徑的參數(shù)不然部分瀏覽器刪除不了

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

相關文章

  • springboot整合mybatis-plus逆向工程的實現(xiàn)

    springboot整合mybatis-plus逆向工程的實現(xiàn)

    這篇文章主要介紹了springboot整合mybatis-plus逆向工程的實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2020-08-08
  • java 在file的尾部添加數(shù)據(jù)的兩種方法總結

    java 在file的尾部添加數(shù)據(jù)的兩種方法總結

    這篇文章主要介紹了java 在file的尾部添加數(shù)據(jù)的兩種方法總結的相關資料,這里提供了兩種在file尾部添加數(shù)據(jù)的方法,希望能幫助到大家,需要的朋友可以參考下
    2017-09-09
  • Java如何從服務器中下載圖片

    Java如何從服務器中下載圖片

    這篇文章主要為大家詳細介紹了Java如何從服務器中下載圖片,代碼中附有詳細注釋,感興趣的小伙伴們可以參考一下
    2016-05-05
  • Java計算Date類時間差實例代碼演示

    Java計算Date類時間差實例代碼演示

    最近工作中遇到需要計算時間差,這里給大家總結下,下面這篇文章主要給大家介紹了關于Java計算Date類時間差的相關資料,文中通過代碼介紹的非常詳細,需要的朋友可以參考下
    2023-12-12
  • springmvc不進入Controller導致404的問題

    springmvc不進入Controller導致404的問題

    這篇文章主要介紹了springmvc不進入Controller導致404的問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-02-02
  • Springboot啟動后執(zhí)行方法小結

    Springboot啟動后執(zhí)行方法小結

    本文主要介紹了Springboot啟動后執(zhí)行方法小結,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2023-04-04
  • java限流算法詳細

    java限流算法詳細

    這篇文章詳細的介紹了java限流算法常用到的算法計數(shù)算法、漏桶算法、令牌桶等算法的相關資料,需要的朋友可以參考下文,希望本篇文章能幫助到您
    2021-09-09
  • Java獲取登錄用戶的IP地址示例代碼

    Java獲取登錄用戶的IP地址示例代碼

    在開發(fā)中我們經常需要獲取用戶IP地址,通過地址來實現(xiàn)一些功能,下面這篇文章主要給大家介紹了關于Java獲取登錄用戶的IP地址的相關資料,文中通過實例代碼介紹的非常詳細,需要的朋友可以參考下
    2023-05-05
  • Java直接插入排序算法實現(xiàn)

    Java直接插入排序算法實現(xiàn)

    這篇文章主要介紹了Java直接插入排序算法實現(xiàn),有需要的朋友可以參考一下
    2014-01-01
  • java對象序列化操作實例分析

    java對象序列化操作實例分析

    這篇文章主要介紹了java對象序列化操作,結合實例形式分析了java對象序列化操作相關實現(xiàn)步驟與操作注意事項,需要的朋友可以參考下
    2019-11-11

最新評論