天天看點

java操作cookie

1 /**
  2          * 讀取所有cookie
  3          * 注意二、從用戶端讀取Cookie時,包括maxAge在内的其他屬性都是不可讀的,也不會被送出。浏覽器送出Cookie時隻會送出name與value屬性。maxAge屬性隻被浏覽器用         來判斷Cookie是否過期
  4          * @param request
  5          * @param response
  6          */
  7         @RequestMapping("/showCookies")
  8         public void showCookies(HttpServletRequest request,HttpServletResponse response ){
  9              
 10             Cookie[] cookies = request.getCookies();//這樣便可以擷取一個cookie數組
 11             if (null==cookies) {
 12                 System.out.println("沒有cookie=========");
 13             } else {
 14                 for(Cookie cookie : cookies){
 15                     System.out.println("name:"+cookie.getName()+",value:"+ cookie.getValue());
 16                 }
 17             }
 18              
 19         }
 20         /**
 21          * 添加cookie
 22          * @param response
 23          * @param name
 24          * @param value
 25          */
 26         @RequestMapping("/addCookie")
 27         public void addCookie(HttpServletResponse response,String name,String value){
 28             Cookie cookie = new Cookie(name.trim(), value.trim());
 29             cookie.setMaxAge(30 * 60);// 設定為30min
 30             cookie.setPath("/");
 31             System.out.println("已添加===============");
 32             response.addCookie(cookie);
 33         }
 34         /**
 35          * 修改cookie
 36          * @param request
 37          * @param response
 38          * @param name
 39          * @param value
 40          * 注意一、修改、删除Cookie時,建立的Cookie除value、maxAge之外的所有屬性,例如name、path、domain等,都要與原Cookie完全一樣。否則,浏覽器将視為兩個不          同的Cookie不予覆寫,導緻修改、删除失敗。
 41          */
 42         @RequestMapping("/editCookie")
 43         public void editCookie(HttpServletRequest request,HttpServletResponse response,String name,String value){
 44             Cookie[] cookies = request.getCookies();
 45             if (null==cookies) {
 46                 System.out.println("沒有cookie==============");
 47             } else {
 48                 for(Cookie cookie : cookies){
 49                     if(cookie.getName().equals(name)){
 50                         System.out.println("原值為:"+cookie.getValue());
 51                         cookie.setValue(value);
 52                         cookie.setPath("/");
 53                         cookie.setMaxAge(30 * 60);// 設定為30min
 54                         System.out.println("被修改的cookie名字為:"+cookie.getName()+",新值為:"+cookie.getValue());
 55                         response.addCookie(cookie);
 56                         break;
 57                     }
 58                 }
 59             }
 60              
 61         }
 62         /**
 63          * 删除cookie
 64          * @param request
 65          * @param response
 66          * @param name
 67          */
 68         @RequestMapping("/delCookie")
 69         public void delCookie(HttpServletRequest request,HttpServletResponse response,String name){
 70             Cookie[] cookies = request.getCookies();
 71             if (null==cookies) {
 72                 System.out.println("沒有cookie==============");
 73             } else {
 74                 for(Cookie cookie : cookies){
 75                     if(cookie.getName().equals(name)){
 76                         cookie.setValue(null);
 77                         cookie.setMaxAge(0);// 立即銷毀cookie
 78                         cookie.setPath("/");
 79                         System.out.println("被删除的cookie名字為:"+cookie.getName());
 80                         response.addCookie(cookie);
 81                         break;
 82                     }
 83                 }
 84             }
 85         }
 86 
 87 /**
 88      * 根據名字擷取cookie
 89      * @param request
 90      * @param name cookie名字
 91      * @return
 92      */
 93     public  Cookie getCookieByName(HttpServletRequest request,String name){
 94         Map<String,Cookie> cookieMap = ReadCookieMap(request);
 95         if(cookieMap.containsKey(name)){
 96             Cookie cookie = (Cookie)cookieMap.get(name);
 97             return cookie;
 98         }else{
 99             return null;
100         }  
101     }
102       
103       
104       
105     /**
106      * 将cookie封裝到Map裡面
107      * @param request
108      * @return
109      */
110     private  Map<String,Cookie> ReadCookieMap(HttpServletRequest request){ 
111         Map<String,Cookie> cookieMap = new HashMap<String,Cookie>();
112         Cookie[] cookies = request.getCookies();
113         if(null!=cookies){
114             for(Cookie cookie : cookies){
115                 cookieMap.put(cookie.getName(), cookie);
116             }
117         }
118         return cookieMap;
119     }
120         

作者:no-npe

出處:https://www.cnblogs.com/geekdc

本文版權歸作者和部落格園共有,歡迎轉載,但未經作者同意必須保留此聲明,且在文章頁面明顯位置給出原文連結,否則保留追究法律責任的權利。

由于作者個人水準有限,如果文中有什麼錯誤,歡迎指出。以免更多的人被誤導。