摘要: 本文主要介紹了Cookie技術帶給網絡的方便之處,并對JSP如何實現Cookie的寫入和讀出,以及用JSP操作Cookie過程中一些需要注意的問題進行了探討。
關鍵詞: JSPCookie寫入讀出
Cookie是一種應用較久的技術。HTML剛剛出現的時候,每個獨立的頁面之間無法記錄和標識不同的用戶。后來人們發明了Cookie技術,當用戶訪問網頁時,它能在訪問者的機器上創立一個文件,我們把它叫作Cookie,我們可以寫一段內容進去,來標識不同的用戶。如果下次用戶再訪問這個網頁的時候,它能讀出這個文件,這樣網頁就知道上次這個用戶已經訪問過該網頁了。
我在此介紹一下如何在寫JSP文件的時候,用JSP實現Cookie技術。
一、寫入Cookie
其實用JSP操作Cookie是非常簡單的,我們來看下面一段JSP程序:
......<%
String cookieName=\"Sender\";
Cookie cookie=new Cookie(cookieName, \"Test_Content\");
cookie.setMaxAge(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文件。
......<%
Cookie cookies=request.getCookies();
Cookie sCookie=1;
String svalue=1;
String sname=1;
For(int i=0;i sCookie=cookies[i]; svalue=sCookie.getValue(); sname=sCookie.getName(); <%<%=sname%> <%=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的格式有兩個不同的版本:第一個版本,我們稱為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]武馬群.Java程序設計.北京:北京工業大學出版社,2007.
[2]楊學全.JSP編程技術.北京:清華大學出版社,2009.
[3]仲進平.JSP網絡開發技術程序設計[M].北京:人民郵電出版社,2007.
[4]汪趙強.JSP實用技術.北京:機械工業出版社,2008.