說起來Cookie應該是一種應用較久的技術了早在HTML剛剛出現的時候在每個獨立的頁面之間沒有辦法記錄和標識不同的用戶後來人們就發明了Cookie技術當用戶訪問網頁時它能夠在訪問者的機器上創立一個文件我們把它叫作Cookie寫一段內容進去來標識不同的用戶如果下次用戶再訪問這個網頁的時候它又能夠讀出這個文件裡面的內容這樣網頁就知道上次這個用戶已經訪問過該網頁了
雖然現在網頁的制作技術比起幾年以前已經發展了許多不過有些時候Cookie還是能夠幫我們很多忙的接下來我們就來看看如何在寫JSP文件的時候用JSP操作Cookie
寫入Cookie
其實用JSP操作Cookie是非常簡單的我們來看下面一段JSP程序
<html>
<head>……(中間略)
</head>
<body>
<%
String cookieName="Sender"
Cookie cookie=new Cookie(cookieName "Test_Content")
cookiesetMaxAge()
responseaddCookie(cookie)
%>
……(其他內容)
</body>
</html>
這樣我們就設置了一個Cookie很簡單吧?
我們來仔細研究一下這段代碼
Cookie cookie=new Cookie(cookieName "Test_Content")
這一行建立了一個Cookie對象初始化有兩個參數第一個參數cookieName定義了Cookie的名字後一個參數也是一個字符串定義了Cookie的內容也就是我們希望網頁在用戶的機器上標識的文件內容
接下來一行cookiesetMaxAge()調用了Cookie中的setMaxAge方法設定Cookie在用戶機器硬盤上的存活期為秒一個Cookie在用戶的硬盤裡面存在的時間並不是無限期的在建立Cookie對象的時候我們必須制定Cookie的存活期超過了這個存活期後Cookie文件就不再起作用會被用戶的浏覽器自行刪除如果我們希望用戶在下次訪問這個頁面的時候Cookie文件仍然有效而且可以被網頁讀出來的話我們可以將Cookie的存活期設得稍微長一些比如cookiesetMaxAge(***)可以讓Cookie文件在一年內有效
讀出Cookie
Cookie文件創建好後自然還需要我們把它讀出來否則我們不是白費力氣嗎?接下來我們看看如何讀出在用戶硬盤上的Cookie
<html>
<head>……(中間略)
</head>
<body>
<table border=>
<tr><td>Name</td><td>value</td></tr>
<%
Cookie cookies[]=requestgetCookies()
Cookie sCookie=null
String svalue=null
String sname=null
for(int i=i<cookieslengthi++)
{
sCookie=cookies[i]
svalue=sCookiegetValue()
sname=sCookiegetName()
%>
<tr><td><%=sname%></td><td><%=svalue%></td></tr>
<%
}
%>
</table>……(其他內容)
</body>
</html>
這一小段JSP文件可以讀出用戶硬盤上的所有有效的Cookie也就是仍然在存活期內的Cookie文件並用表格的形式列出每個Cookie的名字和內容
我們來逐行分析一下這段代碼
Cookie cookies[]=requestgetCookies() 我們用requestgetCookies()讀出用戶硬盤上的Cookie並將所有的Cookie放到一個cookie對象數組裡面
接下來我們用一個循環語句遍歷剛才建立的Cookie對象數組我們用sCookie=cookies[i]取出數組中的一個Cookie對象然後我們用sCookiegetValue()和sCookiegetName()兩個方法來取得這個Cookie的名字和內容
通過將取出來的Cookie的名字和內容放在字符串變量中我們就能對其進行各種操作了在上面的例子裡可通過循環語句的遍歷將所有Cookie放在一張表格中進行顯示
需要注意的一些問題
通過上面兩個簡單的例子可以看到用JSP進行Cookie的操作是非常簡單的不過我們在實際操作中還要注意一些問題
Cookie的兼容性問題
Cookie的格式有個不同的版本第一個版本我們稱為Cookie Version 是最初由Netscape公司制定的也被幾乎所有的浏覽器支持而較新的版本Cookie Version 則是根據RFC 文檔制定的為了確保兼容性JAVA規定前面所提到的涉及Cookie的操作都是針對舊版本的Cookie進行的而新版本的Cookie目前還不被Javaxservlet包所支持
Cookie的內容
同樣的Cookie的內容的字符限制針對不同的Cookie版本也有不同在Cookie Version 中某些特殊的字符例如空格方括號圓括號等於號(=)逗號雙引號斜槓問號@符號冒號分號都不能作為Cookie的內容這也就是為什麼我們在例子中設定Cookie的內容為“Test_Content”的原因
雖然在Cookie
Version 規定中放寬了限制可以使用這些字符但是考慮到新版本的Cookie規范目前仍然沒有為所有的浏覽器所支持因而為保險起見我們應該在Cookie的內容中盡量避免使用這些字符
From:http://tw.wingwit.com/Article/program/Java/JSP/201311/20498.html