自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

Servlet程序應(yīng)用和實例之使用Cookie簡析

開發(fā) 后端
Servlet程序應(yīng)用和實例之使用Cookie是什么情況呢?那么本文就給你介紹Servlet程序應(yīng)用和實例之使用Cookie的情況。

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

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

java.lang.Object.javax.servlet.http.Cookie

public class Cookie extends Object implements Cloneable

Cookie類的方法如表1所示。

  1. 表 1  Cookie類的方法  
  2. 方    法                   意    義  
  3. Cookie(String, String) 生成一個有名和值的Cookie  
  4. clone()                返回當(dāng)前對象的一個拷貝  
  5. getComment()        返回描述該Cookie的注釋,沒有就為空  
  6. getDomain()            返回該Cookie的域名  
  7. getMaxAge()            返回該Cookie的最大壽命  
  8. getName()            返回該Cookie的名字  
  9. getPath()            返回使用該Cookie的所有URL前綴  
  10. getSecure()            返回該Cookie的安全標(biāo)志  
  11. getValue()            返回該Cookie的值  
  12. getVersion()        返回該Cookie的版本  
  13. setComment(String)    設(shè)置描述該Cookie的注釋  
  14. setDomain(String)    設(shè)置該Cookie的域名  
  15. setMaxAge(int)        設(shè)置該Cookie的最大壽命  
  16. setPath(String) 設(shè)置該Cookie只能被從使用該URL前綴的請求提出  
  17. setSecure(boolean)   設(shè)置該Cookie的安全標(biāo)志  
  18. setValue(String)   設(shè)置該Cookie的值  
  19. setVersion(int)       設(shè)置該Cookie所使用的協(xié)議的版本號 

實例:使用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 {  
  13.    public void init(ServletConfig config) throws ServletException {  
  14.        super.init(config);  
  15.     }  
  16.    
  17.    public void service(HttpServletRequest request,   
  18.    HttpServletResponse response) throws  
  19.        IOException {  
  20.       boolean cookieFound = false;  
  21.        Cookie thisCookie = null;  
  22.        response.setContentType("text/html;charset=gb2312;");  
  23.        PrintWriter out = response.getWriter();  
  24.    
  25.        Cookie[] cookies = request.getCookies();  
  26.        if (cookies != null){  
  27.           for (int i = 0; i ﹤ cookies.length; i++) {  
  28.              thisCookie = cookies[0];  
  29.             if (thisCookie.getName().equals("CookieCount")) {  
  30.                 cookieFound = true;  
  31.                 break;  
  32.              }  
  33.           }  
  34.        }  
  35.    
  36.        if (cookieFound == false) {  
  37.          thisCookie = new Cookie("CookieCount", "1");  
  38.           thisCookie.setMaxAge(10);  
  39.           response.addCookie(thisCookie);  
  40.        }  
  41.    
  42.        out.println("﹤html﹥﹤head﹥\n" +  
  43.                    "﹤title﹥閱微草堂﹤/title﹥\n" +  
  44.                    "﹤/head﹥\n" +  
  45.                   "﹤body﹥﹤p﹥﹤font color=red﹥" +  
  46.                    "﹤center﹥﹤h3﹥閱微草堂﹤/h3﹥﹤/center﹥﹤/font﹥");  
  47.        out.println("﹤p﹥歡迎來到閱微草堂!﹤/p﹥");  
  48.    
  49.        if (cookieFound) {  
  50.          int cookieCount = Integer.parseInt(thisCookie.getValue());  
  51.           cookieCount++;  
  52.           thisCookie.setValue(String.valueOf(cookieCount));  
  53.           thisCookie.setMaxAge(10);  
  54.           response.addCookie(thisCookie);  
  55.    
  56.           out.println("﹤p﹥這是您在近" + 10 *  
  57. (Integer.parseInt((thisCookie.getValue()))-1)  
  58.                     + "秒鐘內(nèi)第 " + thisCookie.getValue() + " 次光臨寒舍!﹤/p﹥");  
  59.        }  
  60.        else {  
  61.           out.println( "﹤p﹥您至少已經(jīng)10秒鐘沒有光臨寒舍了!﹤/p﹥");  
  62.        }  
  63.        out.println("﹤/body﹥﹤/html﹥");  
  64.     }  
  65.  } 

 相應(yīng)的配置文件web.xml的內(nèi)容如下:

  1. ﹤?xml version="1.0" encoding="UTF-8"?﹥  
  2. ﹤!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//  
  3. DTD Web Application 2.3//EN" "http://java.sun.com/dtd/web-app_2_3.dtd"﹥  
  4. ﹤web-app﹥  
  5.   ﹤servlet﹥  
  6.     ﹤servlet-name﹥CookieCounter﹤/servlet-name﹥  
  7.     ﹤servlet-class﹥test.cookie.CookieCounter﹤/servlet-class﹥  
  8.   ﹤/servlet﹥  
  9.  
  10.   ﹤servlet-mapping﹥  
  11.     ﹤servlet-name﹥CookieCounter﹤/servlet-name﹥  
  12.     ﹤url-pattern﹥/CookieCounter﹤/url-pattern﹥  
  13.   ﹤/servlet-mapping﹥  
  14. ﹤/web-app﹥ 

【程序注解】

本例是在Resin 2.1.8服務(wù)器下調(diào)試運行的。首先在webapps目錄下建一個名為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"即可訪問到該Servlet。

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

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

Servlet程序應(yīng)用和實例之使用Cookie的基本情況就是這樣了,希望對你在實際操作有所幫助。
 

【編輯推薦】

  1. JSP+JavaBean+Servlet結(jié)構(gòu)工作原理淺析
  2. JSP Servlet開發(fā)最初那點事
  3. JSP開發(fā)中Servlet之導(dǎo)入事件驅(qū)動技術(shù)
  4. 什么是JSP以及和Servlet的比較
  5. JSP和Servlet中的幾個編碼的作用及原理
責(zé)任編輯:仲衡 來源: 百度空間
相關(guān)推薦

2010-02-22 10:27:44

Python應(yīng)用程序

2024-05-31 12:38:32

2013-12-05 10:13:25

iOS圖標(biāo)

2010-04-12 15:39:37

無線接入技術(shù)應(yīng)用

2009-08-20 09:58:06

C#操作文本文件

2009-08-13 15:48:57

C#指針

2011-06-23 09:42:54

Android Mar應(yīng)用商店Android

2009-09-03 10:52:41

C#遞歸樹

2010-04-20 20:46:01

負載均衡

2011-07-21 15:23:28

應(yīng)用商店APP Store蘋果

2010-03-15 16:50:48

無線LAN技術(shù)

2009-08-13 14:36:40

C#結(jié)構(gòu)體構(gòu)造函數(shù)

2009-08-12 16:38:35

C#讀取XML節(jié)點

2023-06-25 12:17:44

2011-07-12 14:04:58

2012-03-06 10:13:14

諾基亞應(yīng)用商店運營商

2023-10-19 11:53:53

2009-06-08 21:25:29

Java聲音技術(shù)

2010-09-08 16:25:39

SIP協(xié)議棧

2010-09-10 09:52:44

開源協(xié)議棧
點贊
收藏

51CTO技術(shù)棧公眾號