<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    weidagang2046的專欄

    物格而后知致
    隨筆 - 8, 文章 - 409, 評(píng)論 - 101, 引用 - 0
    數(shù)據(jù)加載中……

    使用Cookie的Servlet程序應(yīng)用和實(shí)例

    Cookie是一小塊可以嵌入HTTP請(qǐng)求和響應(yīng)的數(shù)據(jù)。它在服務(wù)器上產(chǎn)生,并作為響應(yīng)頭域的一部分返回給客戶。瀏覽器在收到有Cookie的響應(yīng)后,會(huì)把Cookie的內(nèi)容以"關(guān)鍵字/值"的形式寫(xiě)入到一個(gè)專為存放Cookie的文本文件中。瀏覽器會(huì)把Cookie的信息與請(qǐng)求發(fā)送給服務(wù)器,這樣服務(wù)器就可以再次讀取Cookie中存放的數(shù)據(jù)了。Cookie可以對(duì)有效期進(jìn)行設(shè)置,瀏覽器不會(huì)把過(guò)期的Cookie發(fā)送給服務(wù)器。

    ??? Servlet API提供了一個(gè)Cookie類,封裝了對(duì)Cookie的基本操作。如下所示。

    java.lang.Object
    ??????????????????????????? |-javax.servlet.http.Cookie
    public class Cookie extends Object implements Cloneable
    ???? Cookie類的方法如表14-4所示。

    表14-4? Cookie類的方法
    方??? 法????????????????? ?意??? 義
    Cookie(String, String) 生成一個(gè)有名和值的Cookie
    clone()??????????????? 返回當(dāng)前對(duì)象的一個(gè)拷貝
    getComment()??????? 返回描述該Cookie的注釋,沒(méi)有就為空
    getDomain()??????????? 返回該Cookie的域名
    getMaxAge()??????????? 返回該Cookie的最大壽命
    getName()??????????? 返回該Cookie的名字
    getPath()??????????? 返回使用該Cookie的所有URL前綴
    getSecure()??????????? 返回該Cookie的安全標(biāo)志
    getValue()??????????? 返回該Cookie的值
    getVersion()??????? 返回該Cookie的版本
    setComment(String)??? 設(shè)置描述該Cookie的注釋
    setDomain(String)??? 設(shè)置該Cookie的域名
    setMaxAge(int)??????? 設(shè)置該Cookie的最大壽命
    setPath(String)?設(shè)置該Cookie只能被從使用該URL前綴的請(qǐng)求提出
    setSecure(boolean)?? 設(shè)置該Cookie的安全標(biāo)志
    setValue(String)?? 設(shè)置該Cookie的值
    setVersion(int)?????? 設(shè)置該Cookie所使用的協(xié)議的版本號(hào)
    ???? 實(shí)例:使用Cookie的Servlet程序

    ??? 下面的程序示例14-6就是對(duì)Cookie的基本運(yùn)用。
    ??? 【程序源代碼】

    1?// ==================== Program Description ======================
    2?// 程序名稱:示例14-6: CookieCounter.java
    3?// 程序目的:編寫(xiě)Cookie的Servlet程序
    4?// ==========================================================
    5?package test.cookie;
    6?
    7?import java.io.*;
    8?import java.util.*;
    9?import javax.servlet.*;
    10?import javax.servlet.http.*;
    11?
    12?public class CookieCounter extends HttpServlet {
    ?? public void init(ServletConfig config) throws ServletException {
    14?????? super.init(config);
    15??? }
    16?
    ?? public void service(HttpServletRequest request,
    ?? HttpServletResponse response) throws
    18??????? IOException {
    ????? boolean cookieFound = false;
    20?????? Cookie thisCookie = null;
    21?????? response.setContentType("text/html;charset=gb2312;");
    22?????? PrintWriter out = response.getWriter();
    23?
    24?????? Cookie[] cookies = request.getCookies();
    25?????? if (cookies != null){
    26????????? for (int i = 0; i < cookies.length; i++) {
    27???????????? thisCookie = cookies[0];
    ??????????? if (thisCookie.getName().equals("CookieCount")) {
    29??????????????? cookieFound = true;
    30??????????????? break;
    31???????????? }
    32????????? }
    33?????? }
    34?
    35?????? if (cookieFound == false) {
    36????????? thisCookie = new Cookie("CookieCount", "1");
    37????????? thisCookie.setMaxAge(10);
    38????????? response.addCookie(thisCookie);
    39?????? }
    40?
    41?????? out.println(" " +
    42?????????????????? " " +
    43?????????????????? " " +
    44?????????????????? "

    " +
    45?????????????????? "

    閱微草堂

    ");
    46?????? out.println("

    歡迎來(lái)到閱微草堂!

    ");
    47?
    48?????? if (cookieFound) {
    49????????? int cookieCount = Integer.parseInt(thisCookie.getValue());
    50????????? cookieCount++;
    51????????? thisCookie.setValue(String.valueOf(cookieCount));
    52????????? thisCookie.setMaxAge(10);
    53????????? response.addCookie(thisCookie);
    54?
    55????????? out.println("

    這是您在近" + 10 *
    (Integer.parseInt((thisCookie.getValue()))-1)
    56??????????????????? + "秒鐘內(nèi)第 " + thisCookie.getValue() + " 次光臨寒舍!

    ");
    57?????? }
    58?????? else {
    59????????? out.println( "

    您至少已經(jīng)10秒鐘沒(méi)有光臨寒舍了!

    ");
    60?????? }
    61?????? out.println("");
    62??? }
    63?}
    ??? 相應(yīng)的配置文件web.xml的內(nèi)容如下:




    ?
    ??? CookieCounter
    ??? test.cookie.CookieCounter
    ?

    ?
    ??? CookieCounter
    ??? /CookieCounter
    ?


    ??? 【程序輸出結(jié)果】如圖14-8所示。


    (a)

    (b)
    圖14-8 客戶端返回有關(guān)Cookie的信息


    ??? 【程序注解】
    ??? 本例是在Resin 2.1.8服務(wù)器下調(diào)試運(yùn)行的。首先在webapps目錄下建一個(gè)名為cookie的Web應(yīng)用。Servlet編譯生成的class文件放在cookie/WEB-INF/classes/test/cookie目錄下,web.xml文件直接放在cookie/WEB-INF目錄下。由于web.xml中url-pattern的配置為"/CookieCounter",所以在瀏覽器中輸入"http://localhost:8080/cookie/CookieCounter"即可訪問(wèn)到該Servlet。

    ??? 下面對(duì)源程序做一簡(jiǎn)單分析。在service()方法中,用getCookies()函數(shù)獲得客戶端的Cookies,查找是否有名為"CookieCount"的Cookie。如果不存在就生成一個(gè)Cookie,名稱為"CookieCount",值為"1"(thisCookie = new Cookie("CookieCount", "1")),并指定了該Cookie的最大壽命為10秒鐘(setMaxAge(10)),然后將該Cookie發(fā)送給客戶端(addCookie())。如果Cookie已經(jīng)存在,就將Cookie的值加1之后再發(fā)送給客戶端。

    ??? 這樣,如果客戶端第一次訪問(wèn)CookieCounter Servlet,或者兩次訪問(wèn)之間的時(shí)間間隔超過(guò)了10秒,就將看到如圖14-8(a)所示的輸出結(jié)果。如果客戶端在Cookie的生命周期結(jié)束之前連續(xù)訪問(wèn)該Servlet,則Cookie的值將不斷增加。如圖14-8(b)所示的就是在10秒鐘內(nèi)連續(xù)訪問(wèn)兩次Servlet時(shí)的輸出結(jié)果。

    from:
    http://www.jspcn.net/htmlnews/11242052102341354.html

    posted on 2006-11-20 18:02 weidagang2046 閱讀(712) 評(píng)論(0)  編輯  收藏 所屬分類: Java

    主站蜘蛛池模板: 四虎在线成人免费网站| 亚洲精品视频在线看| 久久精品国产亚洲av瑜伽| 亚洲真人日本在线| 18禁止看的免费污网站| 另类小说亚洲色图| 久久精品亚洲中文字幕无码网站| 免费黄色网址网站| xvideos永久免费入口| 亚洲成aⅴ人片在线观| AV在线亚洲男人的天堂| 美女网站免费福利视频| caoporm超免费公开视频| 亚洲午夜电影在线观看高清 | 热99re久久精品精品免费| 中国一级毛片免费看视频| 亚洲一区二区三区国产精华液| 亚洲一区二区三区香蕉| 成人性生交大片免费看午夜a| 182tv免费视频在线观看| 亚洲国产区男人本色| 91亚洲国产在人线播放午夜| 亚洲成a人无码av波多野按摩| 免费阿v网站在线观看g| 成人爽a毛片免费| 免费高清A级毛片在线播放| 亚洲一本之道高清乱码| 亚洲国产成人私人影院| 亚洲午夜无码AV毛片久久| 猫咪社区免费资源在线观看| 久久黄色免费网站| 国产免费区在线观看十分钟 | 日本免费人成在线网站| 91成人免费福利网站在线| www.亚洲日本| 久久久久亚洲AV片无码| 亚洲一区二区三区乱码A| 免费国产真实迷j在线观看| 四虎精品视频在线永久免费观看| 久久一区二区免费播放| 日本永久免费a∨在线视频|