Servlet和JSP學(xué)習(xí)總結(jié)(七)--Cookie

Cookie是由Web服務(wù)器保存在用戶瀏覽器上的小文本文件,它可以包含有關(guān)用戶的信息吧寺。無論何時用戶鏈接到服務(wù)器,Web站點都可以訪問cookie信息。Cookie作為HTTP header的一部分辩撑,其傳輸由HTTP協(xié)議控制。此外仿耽,你還可以控制cookie的有效時間合冀。

可以通過傳遞name和value兩個參數(shù)給Cookie類的構(gòu)造函數(shù)來創(chuàng)建一個cookie:

Cookie cookie = new Cookie(name, value);

創(chuàng)建完一個Cookie對象后,你可以使用setMaxAge方法設(shè)置maxAge屬性项贺,這個屬性決定cookie何時過期君躺。

要將cookie發(fā)送到瀏覽器,需要調(diào)用HttpServletResponse的add方法开缎。
服務(wù)端若要讀取瀏覽器提交的cookie棕叫,可以通過HttpServletRequest接口的getCookies方法,該方法返回一個Cookie數(shù)組啥箭,若沒有cookies則返回null谍珊。你需要遍歷整個數(shù)組來查詢某個特定名稱的cookie。

目前急侥,還沒有通過名稱來獲取cookie的方法來幫助簡化工作砌滞。此外,也沒有一個直接的方法來刪除一個cookie坏怪,你只能創(chuàng)建一個同名的cookie贝润,并將maxAge 屬性設(shè)置為0,并添加到HttpServletResponse接口中铝宵,就像下面這樣:

Cookie cookie = new Cookie("userName", "");
cookie.setMaxAge(0);
response.addCookie(cookie);

現(xiàn)在我們來編寫一個使用cookie來幫助統(tǒng)計用戶訪問某一頁面次數(shù)的Servlet:

package com.mc.hello;

import java.io.IOException;
import java.io.PrintWriter;

import javax.servlet.ServletException;
import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

public class CookieDemoServlet extends HttpServlet {

    private static final long serialVersionUID = 1L;

    public void doGet(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        response.setCharacterEncoding("UTF-8");
        response.setContentType("text/html");
        PrintWriter out = response.getWriter();
        int count = 0;
        Cookie[] cookies = request.getCookies();
        if(cookies != null) {
            for (Cookie cookie : cookies) {
                if(cookie.getName().equals("VisitCount")) {
                    count = Integer.parseInt(cookie.getValue());
                    break;
                }
            }
        }
        count++;
        out.print("這是你第" + count + "次訪問這個頁面");
        Cookie cookie = new Cookie("VisitCount", "" + count);
        response.addCookie(cookie);
    }
}

在web.xml中的配置:

<servlet>
        <servlet-name>cookie</servlet-name>
        <servlet-class>com.mc.hello.CookieDemoServlet</servlet-class>
</servlet>
<servlet-mapping>
        <servlet-name>cookie</servlet-name>
        <url-pattern>/cookie</url-pattern>
</servlet-mapping>

在瀏覽器地址欄中輸入http://localhost:8080/HelloWorld/cookie即可看到如下頁面:

顯示訪問次數(shù)的頁面

每刷新一次這個頁面打掘,訪問次數(shù)都會增加一次华畏。但是當(dāng)我們關(guān)閉瀏覽器,然后再次打開瀏覽器尊蚁,并輸入這個頁面的URL時亡笑,頁面上顯示還是第一次訪問這個頁面。這是因為我們沒有設(shè)置cookie的過期時間横朋,當(dāng)我們關(guān)閉瀏覽器的時候cookie就過期了仑乌。這里我們將這個cookie的過期時間設(shè)置為3分鐘:

Cookie cookie = new Cookie("VisitCount", "" + count);
cookie.setMaxAge(3 * 60);
response.addCookie(cookie);

這樣一來,3分鐘之內(nèi)琴锭,無論我們是否關(guān)閉瀏覽器晰甚,cookie都不會過期。

下一篇:Servlet和JSP學(xué)習(xí)總結(jié)(八)--Session

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末决帖,一起剝皮案震驚了整個濱河市厕九,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌地回,老刑警劉巖扁远,帶你破解...
    沈念sama閱讀 218,682評論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異落君,居然都是意外死亡穿香,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,277評論 3 395
  • 文/潘曉璐 我一進店門绎速,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人焙蚓,你說我怎么就攤上這事纹冤。” “怎么了购公?”我有些...
    開封第一講書人閱讀 165,083評論 0 355
  • 文/不壞的土叔 我叫張陵萌京,是天一觀的道長。 經(jīng)常有香客問我宏浩,道長知残,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,763評論 1 295
  • 正文 為了忘掉前任比庄,我火速辦了婚禮求妹,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘佳窑。我一直安慰自己制恍,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 67,785評論 6 392
  • 文/花漫 我一把揭開白布神凑。 她就那樣靜靜地躺著净神,像睡著了一般何吝。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上鹃唯,一...
    開封第一講書人閱讀 51,624評論 1 305
  • 那天爱榕,我揣著相機與錄音,去河邊找鬼坡慌。 笑死呆细,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的八匠。 我是一名探鬼主播絮爷,決...
    沈念sama閱讀 40,358評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼梨树!你這毒婦竟也來了坑夯?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,261評論 0 276
  • 序言:老撾萬榮一對情侶失蹤抡四,失蹤者是張志新(化名)和其女友劉穎柜蜈,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體指巡,經(jīng)...
    沈念sama閱讀 45,722評論 1 315
  • 正文 獨居荒郊野嶺守林人離奇死亡淑履,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,900評論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了藻雪。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片秘噪。...
    茶點故事閱讀 40,030評論 1 350
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖勉耀,靈堂內(nèi)的尸體忽然破棺而出指煎,到底是詐尸還是另有隱情,我是刑警寧澤便斥,帶...
    沈念sama閱讀 35,737評論 5 346
  • 正文 年R本政府宣布至壤,位于F島的核電站,受9級特大地震影響枢纠,放射性物質(zhì)發(fā)生泄漏像街。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,360評論 3 330
  • 文/蒙蒙 一晋渺、第九天 我趴在偏房一處隱蔽的房頂上張望镰绎。 院中可真熱鬧,春花似錦些举、人聲如沸跟狱。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,941評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽驶臊。三九已至挪挤,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間关翎,已是汗流浹背扛门。 一陣腳步聲響...
    開封第一講書人閱讀 33,057評論 1 270
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留纵寝,地道東北人论寨。 一個月前我還...
    沈念sama閱讀 48,237評論 3 371
  • 正文 我出身青樓,卻偏偏與公主長得像爽茴,于是被迫代替她去往敵國和親葬凳。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,976評論 2 355

推薦閱讀更多精彩內(nèi)容