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

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

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

    weidagang2046的專欄

    物格而后知致
    隨筆 - 8, 文章 - 409, 評論 - 101, 引用 - 0
    數據加載中……

    使用Cookie的Servlet程序應用和實例

    Cookie是一小塊可以嵌入HTTP請求和響應的數據。它在服務器上產生,并作為響應頭域的一部分返回給客戶。瀏覽器在收到有Cookie的響應后,會把Cookie的內容以"關鍵字/值"的形式寫入到一個專為存放Cookie的文本文件中。瀏覽器會把Cookie的信息與請求發送給服務器,這樣服務器就可以再次讀取Cookie中存放的數據了。Cookie可以對有效期進行設置,瀏覽器不會把過期的Cookie發送給服務器。

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

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

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

    ??? 下面的程序示例14-6就是對Cookie的基本運用。
    ??? 【程序源代碼】

    1?// ==================== Program Description ======================
    2?// 程序名稱:示例14-6: CookieCounter.java
    3?// 程序目的:編寫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("

    歡迎來到閱微草堂!

    ");
    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??????????????????? + "秒鐘內第 " + thisCookie.getValue() + " 次光臨寒舍!

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

    您至少已經10秒鐘沒有光臨寒舍了!

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




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

    ?
    ??? CookieCounter
    ??? /CookieCounter
    ?


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


    (a)

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


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

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

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

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

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

    主站蜘蛛池模板: 日本久久久免费高清| 免费无码又爽又刺激高潮的视频| 亚洲一级片内射网站在线观看| 亚洲AV网一区二区三区| 国产高清在线免费| 国产在亚洲线视频观看| 国产成人免费ā片在线观看| 亚洲av色香蕉一区二区三区蜜桃| 国产精品公开免费视频| 色多多A级毛片免费看| 久久久久亚洲?V成人无码| 成人性生交大片免费看好| 亚洲狠狠久久综合一区77777| 永久在线免费观看| 国内精品久久久久影院亚洲| 国产成人免费a在线视频色戒| 黄网站色视频免费看无下截 | 97在线免费观看视频| 精品亚洲综合久久中文字幕| 久久精品无码专区免费青青| 亚洲一区中文字幕在线观看| 国产成人免费ā片在线观看 | www视频在线观看免费| 精品丝袜国产自在线拍亚洲| 国产高清视频在线免费观看| 国产视频精品免费视频| 亚洲欧洲第一a在线观看| 免费人成视频在线| 一级特黄录像免费播放肥| 亚洲欧洲免费视频| 日本免费一区二区三区最新| 天黑黑影院在线观看视频高清免费| 免费一级做a爰片久久毛片潮| 亚洲色婷婷六月亚洲婷婷6月| 免费国产黄网站在线看| 在线观看国产区亚洲一区成人| 未满十八18禁止免费无码网站| 日韩亚洲人成在线| 亚洲中文字幕无码一区二区三区| 啦啦啦完整版免费视频在线观看| 亚洲精品av无码喷奶水糖心|