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

JSP處理Cookie的方法詳解

開(kāi)發(fā) 后端
當(dāng)用戶再次訪問(wèn)某個(gè)站點(diǎn)時(shí),服務(wù)端將要求瀏覽器查找并返回先前發(fā)送的Cookie信息,那么在JSP項(xiàng)目中,JSP處理Cookie是采用怎樣的方法呢?

一.什么是Cookies?

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

Cookies給網(wǎng)站和用戶帶來(lái)的好處非常多:

1、Cookie能使站點(diǎn)跟蹤特定訪問(wèn)者的訪問(wèn)次數(shù)、最后訪問(wèn)時(shí)間和訪問(wèn)者進(jìn)入站點(diǎn)的路徑

2、Cookie能告訴在線廣告商廣告被點(diǎn)擊的次數(shù) ,從而可以更精確的投放廣告

3、Cookie有效期限未到時(shí),Cookie能使用戶在不鍵入密碼和用戶名的情況下進(jìn)入曾經(jīng)瀏覽過(guò)的一些站點(diǎn)

4、Cookie能幫助站點(diǎn)統(tǒng)計(jì)用戶個(gè)人資料以實(shí)現(xiàn)各種各樣的個(gè)性化服務(wù)

在JSP中,我們也可以使用Cookie,來(lái)編寫(xiě)一些功能強(qiáng)大的應(yīng)用程序。

下面,我想介紹一下如何用JSP處理Cookie和創(chuàng)建Cookie?! ?  

二.如何創(chuàng)建Cookie

說(shuō)了這么多,大家一定很想知道JSP是如何創(chuàng)建cookie了。JSP處理Cookie是使用如下的語(yǔ)法格式來(lái)創(chuàng)建cookie的:

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

例如:Cookie newCookie =new Cookie("username","waynezheng"); response.addCookie(newCookie);

解釋?zhuān)篔SP是調(diào)用Cookie對(duì)象相應(yīng)的構(gòu)造函數(shù)Cookie(name,value)用合適的名字和值來(lái)創(chuàng)建Cookie,然后 Cookie可以通過(guò)HttpServletResponse的addCookie方法加入到Set-Cookie應(yīng)答頭,本例中Cookie對(duì)象有兩個(gè)字符串參數(shù):username,waynezheng。注意,名字和值都不能包含空白字符以及下列字符: @ : ;? , " / [ ] ( ) =

三. JSP處理Cookie的屬性

看到這里,有的朋友又要問(wèn)了:我光知道如何創(chuàng)建Cookie有什么用呀?是呀,光知道如何創(chuàng)建Cookie而不知道怎么使用是不夠的。在JSP中,程序是通過(guò)cookie.setXXX設(shè)置各種屬性,用cookie.getXXX讀出cookie的屬性,現(xiàn)把Cookie的主要屬性,及其方法列于下,供大家參考:

類(lèi)型 方法名 方法解釋
String getComment() 返回cookie中注釋,如果沒(méi)有注釋的話將返回空值.
String  getDomain() 返回cookie中Cookie適用的域名. 使用getDomain() 方法可以指示瀏覽器把Cookie返回給同 一域內(nèi)的其他服務(wù)器,而通常Cookie只返回給與發(fā)送它的服務(wù)器名字完全相同的服務(wù)器。注意域名必須以點(diǎn)開(kāi)始(例如.yesky.com) 
int  getMaxAge()  返回Cookie過(guò)期之前的最大時(shí)間,以秒計(jì)算。 
String getName()  返回Cookie的名字。名字和值是我們始終關(guān)心的兩個(gè)部分,筆者會(huì)在后面詳細(xì)介紹 getName/setName。 
String getPath() 返回Cookie適用的路徑。如果不指定路徑,Cookie將返回給當(dāng)前頁(yè)面所在目錄及其子目錄下 的所有頁(yè)面。
boolean getSecure() 如果瀏覽器通過(guò)安全協(xié)議發(fā)送cookies將返回true值,如果瀏覽器使用標(biāo)準(zhǔn)協(xié)議則返回false值。
String  getValue() 返回Cookie的值。筆者也將在后面詳細(xì)介紹getValue/setValue。 
int getVersion()  返回Cookie所遵從的協(xié)議版本。 
void setComment(String purpose) 設(shè)置cookie中注釋。
void setDomain(String pattern) 設(shè)置cookie中Cookie適用的域名
void setMaxAge(int expiry)  以秒計(jì)算,設(shè)置Cookie過(guò)期時(shí)間。
void setPath(String uri) 指定Cookie適用的路徑。 
void  setSecure(boolean flag) 指出瀏覽器使用的安全協(xié)議,例如HTTPS或SSL。 
void setValue(String newValue) cookie創(chuàng)建后設(shè)置一個(gè)新的值。 
void setVersion(int v) 設(shè)置Cookie所遵從的協(xié)議版本。

四. 讀取客戶端的Cookie

JSP處理Cookie時(shí),在Cookie發(fā)送到客戶端前,先要?jiǎng)?chuàng)建一個(gè)Cookie,然后用addCookie方法發(fā)送一個(gè)HTTP Header。 JSP將調(diào)用request.getCookies()從客戶端讀入Cookie,getCookies()方法返回一個(gè)HTTP請(qǐng)求頭中的內(nèi)容對(duì)應(yīng)的Cookie對(duì)象數(shù)組。你只需要用循環(huán)訪問(wèn)該數(shù)組的各個(gè)元素,調(diào)用getName方法檢查各個(gè)Cookie的名字,直至找到目標(biāo)Cookie,然后對(duì)該Cookie調(diào)用getValue方法取得與指定名字關(guān)聯(lián)的值 。

例如

  1. <%   
  2.  String userName=request.getParameter("username");//從提交的HTML表單中獲取,用戶名  
  3.  Cookie theUsername=new Cookie("username",userName);//以"username",userName值/對(duì)創(chuàng)建一個(gè)Cookie  
  4.  response.addCookie(theUsername);  
  5. > 
  6. ..............  
  7. <%  
  8.  Cookie myCookie[]=request.getCookies();//創(chuàng)建一個(gè)Cookie對(duì)象數(shù)組  
  9.  for(int n=0;n=cookie.length-1;i++);//設(shè)立一個(gè)循環(huán),來(lái)訪問(wèn)Cookie對(duì)象數(shù)組的每一個(gè)元素  
  10.  Cookie newCookiemyCookie[n];  
  11.  if(newCookie.getName().equals("username")); //判斷元素的值是否為username中的值  
  12.   {%> 
  13.    你好,<%=newCookie.getValue()%>!//如果找到后,向他問(wèn)好  
  14.   <%}  
  15. > 

設(shè)置Cookie的存在時(shí)間,及刪除Cookie 在JSP中,使用setMaxAge(int expiry)方法來(lái)設(shè)置Cookie的存在時(shí)間,參數(shù)expiry應(yīng)是一個(gè)整數(shù)。正值表示cookie將在這么多秒以后失效。 注意這個(gè)值是cookie將要存在的最大時(shí)間,而不是Cookie現(xiàn)在的存在時(shí)間。 負(fù)值表示當(dāng)瀏覽器關(guān)閉時(shí),Cookie將會(huì)被刪除。零值則是要?jiǎng)h除該Cookie。 如:

  1. <%  
  2.  Cookie deleteNewCookie=new Cookie("newcookie",null);  
  3.  deleteNewCookie.setMaxAge(0);  
  4.  deleteNewCookie.setPath("/");   
  5.  response.addCookie(deleteNewCookie);  
  6. > 

這就是JSP處理Cookie的流程,但在實(shí)踐的開(kāi)發(fā)過(guò)程中,還要考慮項(xiàng)目的需求和用戶的習(xí)慣等問(wèn)題。

 

【編輯推薦】

  1. JSP亂碼問(wèn)題及解決方法
  2. JSP的優(yōu)勢(shì):應(yīng)用范圍與性能比較
  3. 如何設(shè)置JSP開(kāi)發(fā)及運(yùn)行環(huán)境
  4. Servlets和JSP最佳實(shí)踐
  5. 在JSP中三種連接字符串的配置
責(zé)任編輯:佚名 來(lái)源: CSDN博客
相關(guān)推薦

2009-07-02 13:10:09

JSP技術(shù)

2009-02-11 10:08:53

Cookie屬性JSP

2009-02-17 10:40:26

頁(yè)面跳轉(zhuǎn)JSP教程

2009-06-29 17:57:30

ApplicationJSP

2010-09-30 15:59:16

JSPCookie

2010-04-14 09:20:26

.NET多線程

2021-09-26 09:56:24

CookieSameParty前端

2009-07-06 16:05:50

JSP特點(diǎn)

2009-07-06 09:49:26

Servlet JSP

2009-08-03 10:11:44

JSP開(kāi)發(fā)環(huán)境配置

2009-09-10 09:48:15

JSP使用FCKedi

2009-02-18 14:28:23

編碼亂碼JSP

2009-07-06 17:08:19

測(cè)試JSP容器

2009-11-13 09:15:34

WPF

2009-07-01 15:45:39

JSP常見(jiàn)問(wèn)題

2009-07-06 18:02:34

JSP服務(wù)器

2009-07-03 17:33:06

JSP中調(diào)用JavaB

2009-07-06 10:00:31

JSP頁(yè)面?zhèn)髦?/a>

2009-07-06 15:03:53

JSP向Servlet

2009-07-21 13:43:53

ASP和JSP比較
點(diǎn)贊
收藏

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