JSP如何讀寫Cookie?
來源:易賢網(wǎng) 閱讀:645 次 日期:2015-01-27 15:00:42
溫馨提示:易賢網(wǎng)小編為您整理了“JSP如何讀寫Cookie?”,方便廣大網(wǎng)友查閱!

說起來,Cookie應(yīng)該是一種應(yīng)用較久的技術(shù)了。早在HTML剛剛出現(xiàn)的時(shí)候,在每個(gè)獨(dú)立的頁面之間沒有辦法記錄和標(biāo)識(shí)不同的用戶。后來人們就發(fā)明了Cookie技術(shù),當(dāng)用戶訪問網(wǎng)頁時(shí),它能夠在訪問者的機(jī)器上創(chuàng)立一個(gè)文件,我們把它叫作Cookie,寫一段內(nèi)容進(jìn)去,來標(biāo)識(shí)不同的用戶。如果下次用戶再訪問這個(gè)網(wǎng)頁的時(shí)候,它又能夠讀出這個(gè)文件里面的內(nèi)容,這樣網(wǎng)頁就知道上次這個(gè)用戶已經(jīng)訪問過該網(wǎng)頁了。

雖然現(xiàn)在網(wǎng)頁的制作技術(shù)比起幾年以前已經(jīng)發(fā)展了許多。不過有些時(shí)候,Cookie還是能夠幫我們很多忙的。接下來,我們就來看看,如何在寫JSP文件的時(shí)候,用JSP操作Cookie.

寫入Cookie

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

……(中間略)

……(其他內(nèi)容)

這樣我們就設(shè)置了一個(gè)Cookie,很簡單吧?

我們來仔細(xì)研究一下這段代碼:

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

這一行建立了一個(gè)Cookie對象,初始化有兩個(gè)參數(shù),第一個(gè)參數(shù)cookieName定義了Cookie的名字,后一個(gè)參數(shù),也是一個(gè)字符串,定義了Cookie的內(nèi)容。也就是我們希望網(wǎng)頁在用戶的機(jī)器上標(biāo)識(shí)的文件內(nèi)容。

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

讀出Cookie

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

……(中間略)

Namevalue

……(其他內(nèi)容)

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

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

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

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

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

需要注意的一些問題

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

1. Cookie的兼容性問題

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

2. Cookie的內(nèi)容

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

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

更多信息請查看IT技術(shù)專欄

更多信息請查看腳本欄目
易賢網(wǎng)手機(jī)網(wǎng)站地址:JSP如何讀寫Cookie?
由于各方面情況的不斷調(diào)整與變化,易賢網(wǎng)提供的所有考試信息和咨詢回復(fù)僅供參考,敬請考生以權(quán)威部門公布的正式信息和咨詢?yōu)闇?zhǔn)!

2025國考·省考課程試聽報(bào)名

  • 報(bào)班類型
  • 姓名
  • 手機(jī)號
  • 驗(yàn)證碼
關(guān)于我們 | 聯(lián)系我們 | 人才招聘 | 網(wǎng)站聲明 | 網(wǎng)站幫助 | 非正式的簡要咨詢 | 簡要咨詢須知 | 加入群交流 | 手機(jī)站點(diǎn) | 投訴建議
工業(yè)和信息化部備案號:滇ICP備2023014141號-1 云南省教育廳備案號:云教ICP備0901021 滇公網(wǎng)安備53010202001879號 人力資源服務(wù)許可證:(云)人服證字(2023)第0102001523號
云南網(wǎng)警備案專用圖標(biāo)
聯(lián)系電話:0871-65099533/13759567129 獲取招聘考試信息及咨詢關(guān)注公眾號:hfpxwx
咨詢QQ:526150442(9:00—18:00)版權(quán)所有:易賢網(wǎng)
云南網(wǎng)警報(bào)警專用圖標(biāo)