今早,機率課偷了下小懶寫的:

泡一杯紅茶,acm集訓前,寫篇部落格記錄記錄el表達式。
el 全名為expression language。受ecmascript 和xpath 表達式的語言啟發。el 的文法比傳統jsp scriptlet 更為友善、簡潔。
①基本知識
${為起始、以}為結尾的,構造:${expression}。接下來比較下:
jsp scriptlet擷取:
1
2
3
<code>user user = (user)session.getattribute(</code><code>"user"</code><code>);</code>
<code>string sex = user.getname( );</code>
el 擷取:
<code>${sessionscope.user.sex}</code>
② [] 和 . 運算符
el表達式中,對象有屬性。就可以利用 [] 和 . 運算符 來通路該屬性,兩者功能相似。
例如:下面都是一樣的。
<code>${sessionscope.user.name}</code>
或者
<code>${sessionscope.user[</code><code>"name"</code><code>]}</code>
兩者功能差異
# 當要存取的屬性名稱中包含一些特殊字元,如. 或 – 等并非字母或數字的符号,就一定要使用 [ ]。
例如:
<code>${sessionscope.user[</code><code>"my-name"</code><code>] } ${header[</code><code>"accept-language"</code><code>] }</code>
#我們來考慮下列情況:
selection是一個變量,可以代表user各個屬性。
${sessionscope.user[selection]}
如果selection為"name",就相當于sessionscope.user.name或者
{sessionscope.user["name"]}
是以,如果要動态取值時,. (點)運算符無法做到動态取值, [] 運算符 可以做到。
類型
執行個體
方法
javabeans
${user.username}
${user["username"]}
${user['username']}
user.getusername()
數組
${sport[1]}
${sport["1"]}
${sport['1']}
sport[1]
list
${phone[2]}
${phone["2"]}
${phone['2']}
phone.get(2)
map
${phone.home}
${phone["home"]}
${phone['home']}
phone.get("home")
隐含對象
說明
pagecontext
javax.servlet.jsppagecontext
表示目前jsp的javax.servlet.jsp.pagecontext
pagescope
java.util.map
取得page範圍的屬性名稱所對應的值
requestscope
取得request範圍的屬性名稱所對應的值
sessionscope
取得session範圍的屬性名稱所對應的值
applicationscope
取得application範圍的屬性名稱所對應的值
param
如同servletrequest.getparameter(string name)。回傳string類型的值
paramvalues
如同servletrequest.getparametervalues(string name)。回傳string[]類型的值
header
如同servletrequest.getheader(string name)。回傳string類型的值
headervalues
如同servletrequest.getheaders(string name)。回傳string[]類型的值
cookie
如同httpservletrequest.getcookies()
initparam
如同servletcontext.getinitparameter(string name)。回傳string類型的值
隐式對象cookie包含了目前httpservletrequest的所有cookie 的map。
例如
擷取一個名為jsessionid的cookie值:
<code>${cookie.jsessionid.value}</code>
header 儲存使用者浏覽器和服務端用來溝通的資料,當使用者要求服務端的網頁時,會送出一個記載要求資訊的标頭檔案,例如:使用者浏覽器的版本、使用者計算機所設定的區域等其他相關資料。
擷取accept-language語言
<code>${header[</code><code>"accept-language"</code><code>]}。</code>
注意:當要存取的屬性名稱中包含一些特殊字元,如. 或 – 等并非字母或數字的符号,就一定要使用 [ ]。
就想我們在web-xml 配置 初始化值得時候,我們用initparam隐式對象可以擷取。
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
<code><?xml version=</code><code>"1.0"</code> <code>encoding=</code><code>"iso-8859-1"</code><code>?></code>
<code>version=</code><code>"2.4"</code><code>>:</code>
<code><context-param></code>
<code><param-name>username</param-name></code>
<code><param-value>jeffli</param-value></code>
<code></context-param>:</code>
<code></web-app></code>
用el表達式擷取:
<code>${initparam.username}</code>
等價于
<code>string userid = (string)application.getinitparameter(</code><code>"username"</code><code>);</code>
同上面的理
<code>${param.name}</code>
<code>${paramvalues.name}</code>
等價于
request.getparameter(string name)
request.getparametervalues(string name)
邏輯運算符
結果
&&或and
交集${a && b}或${a and b}
true/false
||或or
并集${a || b}或${a or b}
!或not
非${! a }或${not a}
el學習,這次比較全。以前用着就去看,索性寫篇部落格記錄下。
學這個,好比abc... 慢慢來,多寫多用就會了。