成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

JSP開發中Cookie使用完全詳解

開發 后端
Cookie應該是一種應用較久的技術了,雖然現在網頁的制作技術比起幾年以前已經發展了許多。不過有些時候,Cookie還是能夠幫我們很多忙的。接下來,我們就來看看,如何在JSP文件中使用Cookie。

用JSP創建cookie

什么是cookies

大家都知道,瀏覽器與WEB服務器之間是使用HTTP協議進行通信的,當某個用戶發出頁面請求時,WEB服務器只是簡單的進行響應,然后就關閉與該用戶的連接。因此當一個請求發送到WEB服務器時,無論其是否是第一次來訪,服務器都會把它當作第一次來對待,這樣的不好之處可想而知。為了彌補這個缺陷,Netscape開發出了cookie這個有效的工具來保存某個用戶的識別信息,因此人們昵稱為“小甜餅”。cookies是一種WEB服務器通過瀏覽器在訪問者的硬盤上存儲信息的手段:Netscape Navigator使用一個名為cookies.txt本地文件保存從所有站點接收的Cookie信息;而IE瀏覽器把Cookie信息保存在類似于C:\\windows\\cookies的目錄下。當用戶再次訪問某個站點時,服務端將要求瀏覽器查找并返回先前發送的Cookie信息,來識別這個用戶。

cookies給網站和用戶帶來的好處非常多:

1. Cookie能使站點跟蹤特定訪問者的訪問次數、最后訪問時間和訪問者進入站點的路徑

2. Cookie能告訴在線廣告商廣告被點擊的次數,從而可以更精確的投放廣告

3. Cookie有效期限未到時,Cookie能使用戶在不鍵入密碼和用戶名的情況下進入曾經瀏覽過的一些站點

4. Cookie能幫助站點統計用戶個人資料以實現各種各樣的個性化服務

在JSP中,我們也可以使用Cookie,來編寫一些功能強大的應用程序。

創建Cookie

import="javax.servlet.http.Cookie"

說了這么多,大家一定很想知道JSP是如何創建cookie了。JSP是使用如下的語法格式來創建cookie的:

Cookie cookie_name =new Cookie("Parameter","Value");

例如:

Cookie username_Cookie =new Cookie("username","waynezheng"); 
response.addCookie(username_Cookie);

解釋:JSP是調用Cookie對象相應的構造函數Cookie(name,value)用合適的名字和值來創建Cookie,然后Cookie可以通過HttpServletResponse的addCookie方法加入到Set-Cookie應答頭,本例中Cookie對象有兩個字符串參數:username,waynezheng。注意,名字和值都不能包含空白字符以及下列字符:

@ : ;? , " / [ ] ( ) = 

處理Cookie的屬性

看到這里,有的朋友又要問了:我光知道如何創建Cookie有什么用呀?是呀,光知道如何創建Cookie而不知道怎么使用是不夠的。

在JSP中,程序是通過cookie.setXXX設置各種屬性,用cookie.getXXX讀出cookie的屬性,現在把Cookie的主要屬性,及其方法列于下,供大家參考:

類型

方法名

方法解釋

String

getComment()

返回cookie中注釋,如果沒有注釋的話將返回空值.

String

getDomain()

返回cookieCookie適用的域名. 使用getDomain() 方法可以指示瀏覽器把Cookie返回給同 一域內的其他服務器,而通常Cookie只返回給與發送它的服務器名字完全相同的服務器。注意域名必須以點開始(例如.yesky.com

int

getMaxAge()

返回Cookie過期之前的最大時間,以秒計算。

String

getName()

返回Cookie的名字。名字和值是我們始終關心的兩個部分,筆者會在后面詳細介紹 getName/setName

String

getPath()

返回Cookie適用的路徑。如果不指定路徑,Cookie將返回給當前頁面所在目錄及其子目錄下 的所有頁面。

boolean

getSecure()

如果瀏覽器通過安全協議發送cookies將返回true值,如果瀏覽器使用標準協議則返回false值。

String

getValue()

返回Cookie的值。筆者也將在后面詳細介紹getValue/setValue

int

getVersion()

返回Cookie所遵從的協議版本。

void

setComment(String purpose)

設置cookie中注釋。

void

setDomain(String pattern)

設置cookieCookie適用的域名

void

setMaxAge(int expiry)

以秒計算,設置Cookie過期時間。

void

setPath(String uri)

指定Cookie適用的路徑。

void

setSecure(boolean flag)

指出瀏覽器使用的安全協議,例如HTTPSSSL

void

setValue(String newValue)

cookie創建后設置一個新的值。

void

setVersion(int v)

設置Cookie所遵從的協議版本。   

讀取客戶端的Cookie

在Cookie發送到客戶端前,先要創建一個Cookie,然后用addCookie方法發送一個HTTP Header。JSP將調用request.getCookies()從客戶端讀入Cookie,getCookies()方法返回一個HTTP請求頭中的內容對應的Cookie對象數組。你只需要用循環訪問該數組的各個元素,調用getName方法檢查各個Cookie的名字,直至找到目標Cookie,然后對該Cookie調用getValue方法取得與指定名字關聯的值。

例如:

<%
   //從提交的HTML表單中獲取,用戶名
   String userName=request.getParameter("username");
   //以"username", userName 值/對 創建一個Cookie
   Cookie theUsername=new Cookie("username",userName);
   response.addCookie(theUsername);
  %>
  ..............
  <%
   Cookie myCookie[]=request.getCookies();//創建一個Cookie對象數組
   for(int n=0;n=cookie.length-1;i++);//設立一個循環,來訪問Cookie對象數組的每一個元素
   Cookie newCookie= myCookie[n];
   if(newCookie.getName().equals("username")); //判斷元素的值是否為username中的值
    {%>
     你好,<%=newCookie.getValue()%>!//如果找到后,向他問好
    <%}
  %>

設置Cookie的存在時間,及刪除Cookie

在JSP中,使用setMaxAge(int expiry)方法來設置Cookie的存在時間,參數expiry應是一個整數。正值表示cookie將在這么多秒以后失效。注意這個值是cookie將要存在的最大時間,而不是cookie現在的存在時間。負值表示當瀏覽器關閉時,Cookie將會被刪除。零值則是要刪除該Cookie。如:

<%
   Cookie deleteNewCookie=new Cookie("newcookie",null);
   deleteNewCookie.setMaxAge(0); //刪除該Cookie
   deleteNewCookie.setPath("/");
   response.addCookie(deleteNewCookie);
  %> 

#p#

用JSP操作Cookie

保存寫入Cookie

其實用JSP操作Cookie是非常簡單的,我們來看下面一段JSP程序:

........(中間略)
//保存寫入Cookie 
<%
String cookieName="Sender";
Cookie cookie=new Cookie(cookieName, "Test_Content");
cookie.setMaxAge(10);   //存活期為10秒
response.addCookie(cookie);
%>
........(其他內容)

這樣我們就設置了一個Cookie,很簡單吧?

我們來仔細研究一下這段代碼:

Cookie cookie=new Cookie(cookieName, "Test_Content");

這一行建立了一個Cookie對象,初始化有兩個參數,第一個參數cookieName定義了Cookie的名字,后一個參數,也是一個字符串,定義了Cookie的內容。也就是我們希望網頁在用戶的機器上標識的文件內容。

接下來一行:cookie.setMaxAge(10),調用了Cookie中的setMaxAge方法,設定Cookie在用戶機器硬盤上的存活期為10秒。一個Cookie在用戶的硬盤里面存在的時間并不是無限期的,在建立Cookie對象的時候,我們必須制定Cookie的存活期,超過了這個存活期后,Cookie文件就不再起作用,會被用戶的瀏覽器自行刪除。如果我們希望用戶在下次訪問這個頁面的時候,Cookie文件仍然有效而且可以被網頁讀出來的話,我們可以將Cookie的存活期設得稍微長一些。比如cookie.setMaxAge(365*24*60*60)可以讓Cookie文件在一年內有效。

讀取出Cookie

Cookie文件創建好后,自然還需要我們把它讀出來,否則我們不是白費力氣嗎?接下來我們看看如何讀出在用戶硬盤上的Cookie。

........(中間略)
Name value
<% 
Cookie cookies[]=request.getCookies(); //讀出用戶硬盤上的Cookie,
并將所有的Cookie放到一個cookie對象數組里面
Cookie sCookie=null;
String svalue=null;
String sname=null;
for(int i=0;i<cookies.length-1;i++{    //用一個循環語句遍歷剛才建立的Cookie對象數組
sCookie=cookies[i];   //取出數組中的一個Cookie對象
sname=sCookie.getName(); //取得這個Cookie的名字
svalue=sCookie.getValue(); //取得這個Cookie的內容
%>
<% 
}
%>
name    value
<%=name%> <%=svalue%>
........(其他內容)

這一小段JSP文件可以讀出用戶硬盤上的所有有效的Cookie,也就是仍然在存活期內的Cookie文件。并用表格的形式列出每個Cookie的名字和內容。

我們來逐行分析一下這段代碼:

Cookie cookies[]=request.getCookies() 

我們用request.getCookies()讀出用戶硬盤上的Cookie,并將所有的Cookie放到一個cookie對象數組里面。

接下來我們用一個循環語句遍歷剛才建立的Cookie對象數組,我們用sCookie=cookies[i]取出數組中的一個Cookie對象,然后我們用sCookie.getValue()和sCookie.getName()兩個方法來取得這個Cookie的名字和內容。

通過將取出來的Cookie的名字和內容放在字符串變量中,我們就能對其進行各種操作了。在上面的例子里,可通過循環語句的遍歷,將所有Cookie放在一張表格中進行顯示。

需要注意的一些問題

通過上面兩個簡單的例子,可以看到,用JSP進行Cookie的操作,是非常簡單的。不過我們在實際操作中還要注意一些問題:

1. Cookie的兼容性問題

Cookie的格式有2個不同的版本,第一個版本,我們稱為Cookie Version 0,是最初由Netscape公司制定的,也被幾乎所有的瀏覽器支持。而較新的版本,Cookie Version 1,則是根據RFC 2109文檔制定的。為了確保兼容性,JAVA規定,前面所提到的涉及Cookie的操作都是針對舊版本的Cookie進行的。而新版本的Cookie目前還不被Javax.servlet.http.Cookie包所支持。

2. Cookie的內容

同樣的Cookie的內容的字符限制針對不同的Cookie版本也有不同。在Cookie Version 0中,某些特殊的字符,例如:空格、方括號、圓括號、等于號(=)、逗號、雙引號、斜杠、問號、@符號、冒號、分號都不能作為Cookie的內容。這也就是為什么我們在例子中設定Cookie的內容為"Test_Content"的原因。

雖然在Cookie Version 1規定中放寬了限制,可以使用這些字符,但是考慮到新版本的Cookie規范目前仍然沒有為所有的瀏覽器所支持,因而為保險起見,我們應該在Cookie的內容中盡量避免使用這些字符。

【編輯推薦】

  1. 基于NetBean6.1平臺的JSP開發
  2. 高性能、高彈性JSP和Servlet性能優化
  3. 淺談JSP下的Hibernate分頁技術
責任編輯:楊鵬飛 來源: wujiantao126的博客
相關推薦

2009-07-01 18:17:32

JSP處理Cookie

2009-09-10 09:48:15

JSP使用FCKedi

2013-07-22 13:48:55

iOS開發ASIHTTPRequ使用Cookie

2009-08-03 10:11:44

JSP開發環境配置

2009-07-03 17:33:06

JSP中調用JavaB

2011-05-17 10:19:40

EMC Celerra

2009-07-02 11:34:42

JSP指令JSP開發

2009-06-29 17:57:30

ApplicationJSP

2009-02-01 10:04:44

JSPJavaBeanJavaBean應用

2009-11-05 13:38:45

Internet接入

2010-07-22 15:22:58

BlackBerry開

2009-07-06 16:05:50

JSP特點

2010-08-02 13:04:04

Flex3

2009-10-29 15:04:14

無線接入網

2009-07-06 17:08:19

測試JSP容器

2009-07-02 10:51:21

腳本編程JSP開發

2011-08-17 15:10:21

iPhone開發Web視圖

2009-02-23 14:17:00

include指令動作

2009-10-23 11:30:03

無線接入技術

2011-11-29 10:23:47

JSPaxiswebservice
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 色爱区综合 | 亚洲91 | 一级看片免费视频囗交动图 | 成人在线小视频 | 国产丝袜一区二区三区免费视频 | 久久中文视频 | 欧美视频在线免费 | 黑人巨大精品欧美一区二区免费 | 国产资源一区二区三区 | 亚洲天堂影院 | 亚洲精品久久嫩草网站秘色 | 99热这里都是精品 | av片在线播放 | 久久精品99 | 欧美精品日韩精品 | 91精品国产91久久久久久吃药 | 精品一区二区三区四区 | 日本一区二区视频 | 久久99视频 | 天天干狠狠干 | 欧美a级成人淫片免费看 | 伊人av在线播放 | 国产精品久久国产精品 | 中文字幕在线一区 | 黄色三级免费网站 | 日韩午夜精品 | 久久久久亚洲 | 日本成人一区二区 | 美女黄色在线观看 | 国产黄a一级 | 黄色一级电影免费观看 | 99re在线视频 | 亚洲精品视频一区 | 日日夜夜精品免费视频 | 手机看黄av免费网址 | 欧美日产国产成人免费图片 | 精品欧美一区二区在线观看欧美熟 | 久久久久久美女 | 天天曰天天曰 | 韩日精品在线观看 | 91成人免费观看 |