日韩黑丝制服一区视频播放|日韩欧美人妻丝袜视频在线观看|九九影院一级蜜桃|亚洲中文在线导航|青草草视频在线观看|婷婷五月色伊人网站|日本一区二区在线|国产AV一二三四区毛片|正在播放久草视频|亚洲色图精品一区

分享

Java基礎(chǔ)系列(基礎(chǔ)):Java使用Cookie增刪改查操作!

 印度阿三17 2019-07-06

什么是Cookie?

Cookie是由W3C組織提出,最早由NetScape社區(qū)發(fā)展的一種機(jī)制。

Cookie是存儲(chǔ)于訪問(wèn)者的計(jì)算機(jī)中的變量。每當(dāng)同一臺(tái)計(jì)算機(jī)通過(guò)瀏覽器請(qǐng)求某個(gè)頁(yè)面時(shí),就會(huì)發(fā)送這個(gè)cookie。

Cookie的作用就是用于解決"如何記錄客戶(hù)端的用戶(hù)信息":

  • 當(dāng)用戶(hù)訪問(wèn)web頁(yè)面時(shí),他的名字可以記錄在Cookie中。

  • 在用戶(hù)下一次訪問(wèn)該頁(yè)面時(shí),可以在Cookie中讀取用戶(hù)訪問(wèn)記錄。

Cookie實(shí)際上是一小段文本信息(上限為4kb)??蛻?hù)端請(qǐng)求服務(wù)器,如果服務(wù)器需要記錄該用戶(hù)狀態(tài),就使用response向客戶(hù)端瀏覽器頒發(fā)一個(gè)Cookie??蛻?hù)端瀏覽器可以把Cookie保存起來(lái)。當(dāng)瀏覽器再請(qǐng)求該網(wǎng)站時(shí),瀏覽器把請(qǐng)求的網(wǎng)址連同該Cookie一同提交給服務(wù)器。服務(wù)器檢查該Cookie,以此來(lái)辨認(rèn)用戶(hù)狀態(tài)。服務(wù)還可以根據(jù)需要修改Cookie的內(nèi)容。


Cookie的屬性

屬性名描述
nameCookie的名稱(chēng),Cookie一旦創(chuàng)建,名稱(chēng)便不可更改
valueCookie的值,如果值為Unicode字符,需要為字符編碼。如果為二進(jìn)制數(shù)據(jù),則需要使用BASE64編碼
maxAgeCookie失效的時(shí)間,單位秒。如果為整數(shù),則該Cookie在maxAge秒后失效。如果為負(fù)數(shù),該Cookie為臨時(shí)Cookie,關(guān)閉瀏覽器即失效,瀏覽器也不會(huì)以任何形式保存該Cookie。如果為0,表示刪除該Cookie。默認(rèn)為-1。
secure該Cookie是否僅被使用安全協(xié)議傳輸。安全協(xié)議。安全協(xié)議有HTTPS,SSL等,在網(wǎng)絡(luò)上傳輸數(shù)據(jù)之前先將數(shù)據(jù)加密。默認(rèn)為false。
pathCookie的使用路徑。如果設(shè)置為“/sessionWeb/”,則只有contextPath為“/sessionWeb”的程序可以訪問(wèn)該Cookie。如果設(shè)置為“/”,則本域名下contextPath都可以訪問(wèn)該Cookie。注意最后一個(gè)字符必須為“/”。
domain可以訪問(wèn)該Cookie的域名。如果設(shè)置為“.google.com”,則所有以“google.com”結(jié)尾的域名都可以訪問(wèn)該Cookie。注意第一個(gè)字符必須為“.”。
Comment該Cookie的用處說(shuō)明,瀏覽器顯示Cookie信息的時(shí)候顯示該說(shuō)明。
versionCookie使用的版本號(hào)。0表示遵循Netscape的Cookie規(guī)范,1表示遵循W3C的RFC 2109規(guī)范

獲取所有Cookie
public static Cookie[] getCookies(HttpServletRequest request) {
    return request.getCookies();
}

獲取cookie很簡(jiǎn)單,直接從request中獲取即可。


根據(jù)名稱(chēng)獲取指定Cookie
public static Cookie getCookieByName(HttpServletRequest request, String name) {
    if (StringUtils.isBlank(name)) {
        return null;
    }

    Cookie[] cookies = getCookies(request);
    if (null != cookies) {
        for (Cookie cookie : cookies) {
            if (name.equals(cookie.getName())) {
                return cookie;
            }
        }
    }
    return null;
}

從所有cookie中循環(huán)判斷進(jìn)行獲取指定cookie。


添加Cookie
public static boolean addCookie(HttpServletResponse response, String name, String value, int maxAge) {
    if (StringUtils.isBlank(name) || StringUtils.isBlank(value)) {
        return false;
    }

    Cookie cookie = new Cookie(name.trim(), value.trim());
    if (maxAge <= 0) {
        maxAge = Integer.MAX_VALUE;
    }

    cookie.setMaxAge(maxAge);
    cookie.setPath("/");
    response.addCookie(cookie);
    return true;
}

這個(gè)添加很簡(jiǎn)單。


刪除Cookie
public static boolean removeCookie(HttpServletRequest request, HttpServletResponse response, String name) {
    if (StringUtils.isBlank(name)) {
        return false;
    }

    Cookie[] cookies = getCookies(request);
    if (null != cookies) 
        for (Cookie cookie : cookies) {
            if (name.equals(cookie.getName())) {
                cookie.setValue(null);
                cookie.setMaxAge(0);
                cookie.setPath("/");
                response.addCookie(cookie);
        	     return true;
            }
        }
    }
    return false;
}

刪除cookie,把 value設(shè)置為null,把 max-age設(shè)置為0就行了。


到這里:Java基礎(chǔ)系列(基礎(chǔ)):Java使用Cookie增刪改查操作!分享完畢了,快去試試吧!


最后

  • 編輯操作和刪除操作一樣,但是需要注意的是修改、刪除Cookie時(shí),除value、maxAge之外的所有屬性,例如name、path、domain等,都要與原Cookie完全一樣。否則,瀏覽器將視為兩個(gè)不同的Cookie不予覆蓋,導(dǎo)致修改、刪除失敗。

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶(hù)發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購(gòu)買(mǎi)等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶(hù) 評(píng)論公約

    類(lèi)似文章 更多