java與javascript對cookie操作的工具類

来源:http://www.cnblogs.com/zhuwenqi2016/archive/2017/08/16/7374946.html
-Advertisement-
Play Games

Java對cookie的操作 package cn.utils; import java.util.HashMap; import java.util.Map; import javax.servlet.http.Cookie; import javax.servlet.http.HttpServl ...


Java對cookie的操作

package cn.utils;

 

import java.util.HashMap;

import java.util.Map;

 

import javax.servlet.http.Cookie;

import javax.servlet.http.HttpServletRequest;

import javax.servlet.http.HttpServletResponse;

/**

 * 操作cookie的工具類(預設cookie的有效路徑為"/")

 * @author zwq

 * @version 1.0

 */

public class CookieUtil {

         /**

          * 設置cookie

          * @param response @see javax.servlet.http.HttpServletResponse

          * @param name cookie名

          * @param value cookie值

          * @param maxAge cookie的最大活躍時間(單位s)

          */

         public static void setCookie(HttpServletResponse response,String name,String value,int maxAge){

             Cookie cookie = new Cookie(name,value);

             cookie.setPath("/");

             if(maxAge>0)  cookie.setMaxAge(maxAge);

             response.addCookie(cookie);

         }

        

         /**

          * 根據cookie名獲取cookie

          * @param request @see javax.servlet.http.HttpServletRequest

          * @param name cookie名

          * @return

          */

         public static Cookie getCookieByName(HttpServletRequest request,String name){

             Map<String,Cookie> cookieMap = getCookieMap(request);

             if(cookieMap.containsKey(name)){

                 Cookie cookie = (Cookie)cookieMap.get(name);

                 return cookie;

             }else{

                 return null;

             }  

         }

         /**

          * 獲取cookie的map集合(key=cookieName,value=cookie)

          * @param request @see javax.servlet.http.HttpServletRequest

          * @return

          */

         private static Map<String,Cookie> getCookieMap(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;

         }

         /**

          * 根據指定cookie名檢測cookie是否存在

          * @param request @see javax.servlet.http.HttpServletRequest

          * @param name cookie名

          * @return

          */

         public static boolean checkCookieByName(HttpServletRequest request,String name) {

                   if (name != null && name.trim() != "") {

                            Cookie cookie = getCookieByName(request, name);

                            if (cookie != null) {

                                     return true;

                            }

                   }

                   return false;

         }

        

         /**

          * 根據指定cookie名刪除cookie

          * @param request @see javax.servlet.http.HttpServletRequest

          * @param response @see javax.servlet.http.HttpServletResponse

          * @param name cookie名

          */

         public static boolean removeCookie(HttpServletRequest request ,HttpServletResponse response,String name) {

                   if (name != null && name.trim() != "") {

                            Cookie[] cookies = request.getCookies(); 

                            if (cookies != null && cookies.length > 0) { 

                                for (Cookie cookie : cookies) { 

                                    String cookieName = cookie.getName(); 

                                    // 找到需要刪除的Cookie 

                                    if (name.equals(cookieName)) { 

                                        // 設置生存期為0 

                                        cookie.setMaxAge(0); 

                                        // 設回Response中生效 

                                        response.addCookie(cookie);

                                        return true;

                                    } 

                                } 

                            }

                   }

                   return false;

         }

}

 

Javascript對cookie的操作

/**

 * @description 操作cookie的工具類

 * @author zwq

 * @version 1.0

 */

 

/**

 * @description 設置cookie

 * @param {string} cookieName cookie名

 * @param {string} cookieValue cookie值

 * @param {Date} [cookieExpires] cookie過期時間(可選參數,預設當前會話)

 * @param {string} [cookiePath] cookie有效路徑(可選參數,預設"/")

 */

function setCookie(cookieName, cookieValue, cookieExpires, cookiePath) {

    if (typeof cookieName === "string" && typeof cookieValue == "string" && cookieName.trim() !== "") {

        var cookieStr = cookieName + "=" + cookieValue;

        if (typeof cookieExpires === "object") {

            cookieStr += ";expires=" + cookieExpires.toUTCString();

        }

        if (typeof cookiePath === "string" && cookiePath.trim() !== "") {

            cookieStr += ";path=" + cookiePath;

        }

        document.cookie = cookieStr;

    }

}

/**

 * @description 根據cookie名獲取cookie值

 * @param {string} cookieName cookie名

 * @returns {string}

 */

function getCookie(cookieName) {

    if (typeof cookieName === "string" && cookieName.trim() !== "") {

        if (document.cookie.length > 0) {

            var cookieArr = document.cookie.split(";");

            for (var i = 0; i < cookieArr.length; i++) {

                var cookie = cookieArr[i].trim();

                if (cookie.indexOf(cookieName) === 0) {

                    return cookie.substring(cookieName.length + 1, cookie.length);

                }

            }

        }

    }

    return "";

}

/**

 * @description 根據指定cookie名檢測cookie是否存在

 * @param {string} cookieName cookie名

 * @returns {boolean}

 */

function checkCookie(cookieName) {

    if (typeof cookieName === "string" && cookieName.trim() !== ""){

        var cookieValue = getCookie(cookieName);

        if (cookieValue !== "" && cookieValue !== null && cookieValue !== undefined){

            return true;

        }

    }

    return false;

}

/**

 * @description 根據指定cookie名刪除cookie

 * @param {string} cookieName cookie名

 * @returns {boolean}

 */

function deleteCookie(cookieName) {

    if (typeof cookieName === "string" && cookieName.trim() !== ""){

        var cookieValue = getCookie(cookieName);

        if (cookieValue !== "" && cookieValue !== null && cookieValue !== undefined){

            var date = new Date();

            document.cookie = cookieName + "=;expires=" + date.toUTCString();

            return true;

        }

    }

    return false;

}


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • ZBrush精簡版ZBrushCore發佈已經有一段日子了,相信不少人早已迫不及待地開始嘗試了,不知道你們的體驗如何?毋庸置疑的是,ZBrushCore專為剛接觸3D並希望進入3D雕刻、3D列印以及插畫世界的人而設計。 ...
  • 1.TypeScript的下載和安裝 使用npm安裝: npm install -g typescript 註意:如果沒有安裝npm,npm為nodejs管理包,則可以嘗試先安裝nodejs,nodejs中會攜帶安裝npm 2. 使用tsc編譯工具將.ts文件編譯為.js文件 ...
  • 1、表單標簽 所有需要提交到伺服器端的表單項必須使用<form></form>括起來! form 標簽屬性: action,整個表單提交的位置(可以是一個頁面,也可以是一個後臺 java 代碼) method,表單提交的方式(get/post/delete……等 7 種) Get 與 post 提交 ...
  • 1.行間樣式給單獨的標簽添加樣式.<div style="width:100px; height:100px; background-color:red;"></div>優點:比較方便可以即時的添加屬性。缺點:修改屬性非常麻煩、需要一個個去修改。 2.內聯樣式表<style>div{ <!--選擇器 ...
  • 何為Curry化/柯里化? curry化來源與數學家 Haskell Curry的名字 (編程語言 Haskell也是以他的名字命名)。 柯里化通常也稱部分求值,其含義是給函數分步傳遞參數,每次傳遞參數後部分應用參數,並返回一個更具體的函數接受剩下的參數,這中間可嵌套多層這樣的接受部分參數函數,直至 ...
  • 迭代器是指通過一種形式依次遍曆數組,對象,或者類數組結構中的每個元素. 常見的有jquery中的each方法, ES5自帶的forEach方法. 下麵我們就來自定義一個類似jquery或者ES5的迭代器方法 輸出結果: ["zhangsan", "lisi", "ghostwu"] "zhangsa ...
  • 所用move.js ...
  • 百度一下,自己也想了一下,有一種簡單,無腦的方式分享給你: <input ng-model="start" id="start" placeholder="開始日期" style="width:156px;" class="form-control date-picker" data-date-fo ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...