在jsp中怎么使用Cookie?el表達式中獲取cookie的問題


初學jsp,不清楚cookie的使用方法,希望高手指點一下!
 

一般來說有兩種辦法,在JSP中使用Java的嵌入腳本. 例如: 寫入Cookie <html> <head>........(中間略) </head> <body> <% String cookieName="Sender"; Cookie cookie=new Cookie(cookieName, "Test_Content"); cookie.setMaxAge(10); response.addCookie(cookie); %> ........(其他內容) </body> </html> 這樣我們就設置了一個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。 <html> <head>........(中間略) </head> <body> <table border=1> <tr><td>Name</td><td>value</td></tr> <% Cookie cookies[]=request.getCookies(); Cookie sCookie=null; String svalue=null; String sname=null; for(int i=0;i<cookies.length;i++) { sCookie=cookies[i]; svalue=sCookie.getValue(); sname=sCookie.getName(); %> <tr><td><%=name%></td><td><%=svalue%></td></tr> <% } %> </table> ........(其他內容) </body> </html> 這一小段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的內容中盡量避免使用這些字符。 另一種方法是用Javascript腳本來操作Cookie 兩種方法操作Cookie的具體方法可以這樣查到: 在baidu中搜索關鍵字:JSP Cookie或是Javascript Cookie即可看到你想要的信息.
el表達式中獲取cookie的問題
我的servlet中的代碼是這樣子的
Cookie cookie=new Cookie("username",new String(name.getBytes("iso8859-1")));
在jsp頁面中,
${cookie.username.value}
但是頁面里獲得的值是亂碼,這個怎么去解決,請求提供在el表達式里解決的辦法,


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM