1. 程式人生 > >在jsp中怎麼使用Cookie?el表示式中獲取cookie的問題

在jsp中怎麼使用Cookie?el表示式中獲取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表示式裡解決的辦法,
提問者評價
太感謝了!

相關推薦

在jsp怎麼使用Cookie?el表示式獲取cookie的問題

一般來說有兩種辦法,在JSP中使用Java的嵌入指令碼. 例如: 寫入Cookie <html> <head>........(中間略) </head> <body> <% String cookieName="Sender"; Cookie cooki

JSP】關於EL表示式requestScope和param區別

今天演示EL表示式的時候發現自己jsp的基礎實在是薄弱,在這個很簡單的問題上迷惑了很久。 首先在看遇到的問題: 在瀏覽器地址輸入,表示傳入一個引數test,值為123 http://localhost:8888/Test/index.jsp?test=123 在index.jsp中

SSH 框架controller向jsp傳遞List jsp使用el表示式獲取

  mvc可以使用ModelAndViev傳遞資料選擇跳轉的檢視 controller中的程式碼, 把一個模擬的表單studentListSimulate傳給ModelAndView @RequestMapping("/detial") public Model show

spring和jfinalJSP頁面用EL表示式獲取資料

spring中在跳轉的jsp頁面中用EL表示式獲取資料時候,要加上isELIgnored="false",不然是不會解析EL表示式的,但是在就final就不需要<%@ page language="java" import="java.util.*" pageEncod

jsp頁面el表示式獲取list長度

在jsp頁面中不能通過${list.size}取列表長度,而是 <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%> <%@ taglib prefix="fn" uri="ht

IDEASSH整合jsp無法解析el表示式

 在eclipse中ssh專案執行正常能夠解析el表示式而IDEA中卻無法解析,值棧中已經有值   jsp頁面顯示能夠解析OGNL表示式取無法解析el表示式,解決辦法   <%@page isELIgnored="fa

SSH 框架controller向jsp傳遞List jsp使用el表達式獲取

color 表單 src 模擬 如何 bsp alt 分享 pri mvc可以使用ModelAndViev傳遞數據選擇跳轉的視圖 controller中的代碼, 把一個模擬的表單studentListSimulate傳給ModelAndView @Reques

jsp頁面EL表示式不被解析的問題

把web.xml  中Web-App版本修改到2.4   <web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:we

JSP隱含變數和SpringModel在EL表示式的讀取順序

結論: 1.jsp中用EL表示式(${attribute_name})的讀取順序:model > session > application > requset 2.慎重使用session變數,這個範圍太大了,如果因為一個模組把變數存在sess

JSP九大內建物件和EL表示式的隱含物件

雖然現在基本上使用SpringMVC+AJAX進行開發了Java Web了,但是還是很有必要了解一下JSP的九大內建物件的。像request、response、session這些物件,即便使用其他框架也是會經常用到的。因此十分有了解的必要。 這些物件可以在JSP

jsp使用el表示式和jstl函式輸出格式化數字

1.jsp中引入lib包 <%@ taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix="fmt" %> 2.el表示式呼叫格式化函式 <fmt:formatNumber type=

jsp頁面使用EL表示式無法解析spring mvcModel或者ModelAndView傳的值

1、在spring-mvc的配置檔案中已經配置jsp的檢視解析器 <bean id="viewResolver"class="org.springframework.web.servlet.view.InternalResourceViewResolver">&

如何在jsp頁面利用el表示式的${error }取值?

如何在jsp頁面中利用el表示式的<p>${error }</p>取值? 在後端通過: request.setAttribute("error", e.getMessage()); 來為error屬性賦值,前端jsp才可以通過 <p>$

jsp頁面使用el 按key獲取map的對應值GOOD

action中的程式碼 private Map<String, String> msgs = new HashMap<String, String> msgs.put("loginError", "驗證碼錯誤"); request.setAttrib

jsp頁面el表示式可以使用提示的內建物件

在該環境下可以使用${pageContext.request},這個時候可以使用alt+/來自動提示 但是不能使用${request.getSession()}來提示 獲取專案名稱路徑${pageContext.request.contextPath}

JSP使用el函式標籤獲取預設值(男女性別選項)

主要用男女性別選項來說一下這個問題,因為在jsp中的input標籤中,不能直接使用el標籤的三元運算子,會出現黃色的警告線,所以我使用了el函式解決了這個問題,(男女性別選項的問題) 如下圖所示,我使

使用eclipse時在jsp使用el表示式報錯的解決方法

/*** * --------------攻城獅-------------- * ,%%%%%%%%, * ,%%/\%%%%/\%% * ,%%%\c "" J/%%% * %. %%%%/

el表示式動態獲取map的value值

先說下業務場景,查詢介面,欄位通過迴圈list展示出來,但是其中有一個欄位為最後操作人的id,需要轉換成其對應的名稱。 頁面程式碼: <c:forEach items="${servi

Servlet資料傳到JSP頁面使用el表示式${}無法顯示問題

       當我使用mybatis從資料庫查詢資料,通過servlet返回到介面,出現了兩種錯誤。首先看我的servlet和jsp頁面。Servlet程式碼 List<Student> students = studentService.query

jspjstlEL表示式不支援問題

問題所在:“value” dose not support runtime expressions 原因:匯入的jstl標籤有誤,注意匯入的是http://java.sun.com/jsp/jstl/core