1. 程式人生 > >springmvc伺服器實現對cookie操作

springmvc伺服器實現對cookie操作



1. [程式碼]基於springMVC框架下寫的

/**
         * 讀取所有cookie
         * 注意二、從客戶端讀取Cookie時,包括maxAge在內的其他屬性都是不可讀的,也不會被提交。瀏覽器提交Cookie時只會提交name與value屬性。maxAge屬性只被瀏覽器用來判斷Cookie是否過期
         * @param request
         * @param response
         */
        @RequestMapping("/showCookies")
        public void showCookies(HttpServletRequest request,HttpServletResponse response ){
             
            Cookie[] cookies = request.getCookies();//這樣便可以獲取一個cookie陣列
            if (null==cookies) {
                System.out.println("沒有cookie=========");
            } else {
                for(Cookie cookie : cookies){
                    System.out.println("name:"+cookie.getName()+",value:"+ cookie.getValue());
                }
            }
             
        }
        /**
         * 新增cookie
         * @param response
         * @param name
         * @param value
         */
        @RequestMapping("/addCookie")
        public void addCookie(HttpServletResponse response,String name,String value){
            Cookie cookie = new Cookie(name.trim(), value.trim());
            cookie.setMaxAge(30 * 60);// 設定為30min
            cookie.setPath("/");
            System.out.println("已新增===============");
            response.addCookie(cookie);
        }
        /**
         * 修改cookie
         * @param request
         * @param response
         * @param name
         * @param value
         * 注意一、修改、刪除Cookie時,新建的Cookie除value、maxAge之外的所有屬性,例如name、path、domain等,都要與原Cookie完全一樣。否則,瀏覽器將視為兩個不同的Cookie不予覆蓋,導致修改、刪除失敗。
         */
        @RequestMapping("/editCookie")
        public void editCookie(HttpServletRequest request,HttpServletResponse response,String name,String value){
            Cookie[] cookies = request.getCookies();
            if (null==cookies) {
                System.out.println("沒有cookie==============");
            } else {
                for(Cookie cookie : cookies){
                    if(cookie.getName().equals(name)){
                        System.out.println("原值為:"+cookie.getValue());
                        cookie.setValue(value);
                        cookie.setPath("/");
                        cookie.setMaxAge(30 * 60);// 設定為30min
                        System.out.println("被修改的cookie名字為:"+cookie.getName()+",新值為:"+cookie.getValue());
                        response.addCookie(cookie);
                        break;
                    }
                }
            }
             
        }
        /**
         * 刪除cookie
         * @param request
         * @param response
         * @param name
         */
        @RequestMapping("/delCookie")
        public void delCookie(HttpServletRequest request,HttpServletResponse response,String name){
            Cookie[] cookies = request.getCookies();
            if (null==cookies) {
                System.out.println("沒有cookie==============");
            } else {
                for(Cookie cookie : cookies){
                    if(cookie.getName().equals(name)){
                        cookie.setValue(null);
                        cookie.setMaxAge(0);// 立即銷燬cookie
                        cookie.setPath("/");
                        System.out.println("被刪除的cookie名字為:"+cookie.getName());
                        response.addCookie(cookie);
                        break;
                    }
                }
            }
        }

2. [程式碼]通常開發時先用以下的程式碼將獲取的cookie進行封裝  

/**
     * 根據名字獲取cookie
     * @param request
     * @param name cookie名字
     * @return
     */
    public  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  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;
    }

相關推薦

springmvc伺服器實現cookie操作

 1. [程式碼]基於springMVC框架下寫的 /** * 讀取所有cookie * 注意二、從客戶端讀取Cookie時,包括maxAge在內的其他屬性都是不可讀的,也不會被提交。瀏覽器提交Cookie時只會提交name與valu

Java實現cookie操作(增刪改查)

/** * 讀取所有cookie * 注意二、從客戶端讀取Cookie時,包括maxAge在內的其他屬性都是不可讀的,也不會被提交。瀏覽器提交Cookie時只會提交name與value屬性。maxAge屬性只被瀏覽器用來判斷Cookie是

java與javascriptcookie操作的工具類

check cells ram tco expire turn get servle request Java對cookie的操作 package cn.utils; import java.util.HashMap; import java.util.Map;

js實現cookie的增刪改查

簡單來說Cookie是以鍵值對的形式儲存的(Key=Value),各Cookie之間一般是以“;”隔開。 簡單的操作: 儲存cookie(key為test;value為testValue): document.cookie = "test=testValue";

Cookie 詳解以及實現一個 cookie 操作

Cookie 詳解以及實現一個 cookie 操作庫 cookie 在前端有著大量的應用,但有時我們對它還是一知半解。下面來看看它的一些具體的用法 Set-Cookie 伺服器通過設定響應頭來設定客戶端的 cookie,形如: Set-Cookie: &lt;cookie名&gt;=&

Spring使用JdbcTemplate實現資料庫操作 (內部類定義RowMapper)

http://blog.csdn.net/wyc_cs/article/details/37766221 Spring對資料庫的操作使用JdbcTemplate來封裝JDBC,結合Spring的注入特性可以很方便的實現對資料庫的訪問操作。 使用JdbcTemplate可以

如何使用LocalDate實現時間操作的簡單化

jdk8之前,java中做時間處理時一般會採用java.util.Date,大多吐槽Date的是其對於月份的處理是從0開始的,取得正確月份還得往後偏移一位。Date內容很豐富,不但包含年月日,還包含時間。jdk8之後,我們有更好的選擇 -- java.time.LocalDa

使用js實現cookie的增刪改查

簡單的操作cookie 儲存cookie(key為test;value為testValue):  document.

詳解sftp實現遠端伺服器的檔案操作

該所有操作依賴的jsch的jar包     jsch-0.1.50.jar  以下為本人整理的相關SFTP對伺服器檔案的相關操作,具體的操作方方法依賴於ChannelSftp物件,刻字機單獨進行封裝,本處就不貼出完整的工具類了 1:獲得 ChannelSftp物件 pu

使用logging模塊實現文件增刪改查操作的紀錄(low B版)

文件 time *** tle () handle 函數賦值 增刪改查操作 info #!/usr/bin/env python#對之前文件進行的增刪改查操作實現日誌操作,日誌輸出用戶進行過的操作。#!/usr/bin/env pythondef log(): imp

js操作html的實踐【1】——實現網頁假崩潰吸引網友註意力

code 自己 頁面 註意力 size mat pre fun hidden 前些天逛網站的時候,發現了一些好玩的細節:當網頁失去焦點後標題顯示網頁崩潰,這將使得瀏覽者重新點回網頁。 來自ANOTHERHOME(https://www.anotherhome.net/)與晨

php如何利用python實現pdf文件的操作(讀寫、合並分割)

PHP實現pdf文件截取 PHP調用python腳本 php如何利用python實現對pdf文件的操作 需求:在PHP裏實現了把8.pdf的前4頁pdf文件截取出來生成新的pdf文件。 詳細步驟如下: 1. 安裝python第三方庫PyPDF2 前提:python必須是3.x版本以上,必要時需要升級p

多個有序數組,實現歸並操作

進行 tro tor cli 解決 ID 最小值 方便 方法 工作中遇到了多個有序鏈的歸並操作,這裏記錄一下解決方法。方便後續使用。 歸並的方法列2種: (1) 堆排序, 或者勝利樹。減少比較次數。效率高,實現比較麻煩。 (2) 普通方法,每次都需要比較。實現簡單,一般

shell實現mysql數據庫的增、刪、改、查操作

shell實現對mysql的增、刪、改、shell實現對mysql數據庫的增、刪、改、查操作 #!/bin/bash  #數據庫信息 HOSTNAME="192.168.111.84" PORT="3306" USERNAM

大數據學習——java代碼實現HDFS文件的read、append、write操作

導入 () 學習 ioe java 1.8 todo ever col 在之前的環節進行了HDFS 的搭建過程,接下來學習的內容是通過java代碼實現對HDFS中文件進行操作。 這部分學習是為了之後在使用到的MapRedce對HDFS 文件進行操作。 在eclipse上編寫

基於svg.js實現圖形的拖拽、選擇和編輯操作

鼠標移出 strong lse 方便 jquery cap .cn sta plot 本文主要記錄如何使用 svg.js 實現對圖形的拖拽,選擇,圖像渲染及各類形狀的繪制操作。 1、關於SVG SVG 是可縮放的矢量圖形,使用XML格式定義圖像,可以生成對應的DOM節點,便

五、通過Protobuf整合Netty實現協議訊息客戶端與伺服器通訊實戰

目錄 一、Protocol Buffers 是什麼? 二、Protocol Buffers 檔案和訊息詳解 三、專案實戰,直接掌握的protobuf應用。 一、Protocol Buffers 是什麼?         1、官網翻譯

java中實現時間的操作

所屬類別:類的成員變數與方法、構造方法 題目: 在程式中經常要對時間進行操作但是並沒有時間型別的資料。 那麼我們可以自己實現一個時間類來滿足程式中的需要。  定義名為MyTime的類其中應有三個整型成員時hour分minute秒second為了保證資料的安全性這三個成員

PHP如何利用Python實現PDF檔案的操作

需求:在PHP裡實現了把8.pdf的前4頁pdf檔案截取出來生成新的pdf檔案。 詳細步驟如下: 前提:python必須是3.x版本以上,必要時需要升級pip3,命令如下:pip3 install --upgrade pipPyPDF 自 2010年 12月開始就不在更新了,PyPDF2 接棒 PyPD

Pythoncookie操作

#從網頁獲取cookie# import http.cookiejar,urllib.request# cookie = http.cookiejar.LWPCookieJar()#建立cookie處理器物件# handler = urllib.request.HTTPCookieProcessor(coo