天天看點

④品茶看<Servlet&JSP>-EL表達式前言EL介紹EL 文法通路JavaBeanEL隐式對象EL運算符總結

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

                

④品茶看<Servlet&JSP>-EL表達式前言EL介紹EL 文法通路JavaBeanEL隐式對象EL運算符總結

  泡一杯紅茶,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>&lt;?xml version=</code><code>"1.0"</code> <code>encoding=</code><code>"iso-8859-1"</code><code>?&gt;</code>

<code>version=</code><code>"2.4"</code><code>&gt;:</code>

<code>&lt;context-param&gt;</code>

<code>&lt;param-name&gt;username&lt;/param-name&gt;</code>

<code>&lt;param-value&gt;jeffli&lt;/param-value&gt;</code>

<code>&lt;/context-param&gt;:</code>

<code>&lt;/web-app&gt;</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)

邏輯運算符

結果

&amp;&amp;或and

交集${a &amp;&amp; b}或${a and b}

true/false

||或or

并集${a || b}或${a or b}

!或not

非${! a }或${not a}

 

  el學習,這次比較全。以前用着就去看,索性寫篇部落格記錄下。

          

④品茶看&lt;Servlet&amp;JSP&gt;-EL表達式前言EL介紹EL 文法通路JavaBeanEL隐式對象EL運算符總結

                學這個,好比abc... 慢慢來,多寫多用就會了。