程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> JAVA編程 >> 關於JAVA >> Java 是若何讀取和寫入閱讀器Cookies的實例詳解

Java 是若何讀取和寫入閱讀器Cookies的實例詳解

編輯:關於JAVA

Java 是若何讀取和寫入閱讀器Cookies的實例詳解。本站提示廣大學習愛好者:(Java 是若何讀取和寫入閱讀器Cookies的實例詳解)文章只能為提供參考,不一定能成為您想要的結果。以下是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的一個通用類

/*
 * 該類可以從閱讀器要求中提掏出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閱讀器舉個栗子

 

然後就是我們能夠須要對cookie停止刪除操作

/**
    * <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的材料整頓,後續持續彌補相干材料,感謝年夜家對本站的支撐!

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved