JSP_EL的回顧
在 JSP 頁面中,使用標籤庫代替傳統的 Java 片段語言來實現頁面的顯示邏輯已經不是新技術了,然而,由自定義標籤很容易造成重複定義和非標準的實現。鑑於此,出現了 JSTL ( JSP Standard Tag Library )。
Sun 釋出的標準 JSTL1.1 標籤庫有以下幾個標籤:
核心標籤庫:包含 Web 應用的常見工作,比如:迴圈、表示式賦值、基本輸入輸出等。
國際化標籤庫:用來格式化顯示資料的工作,比如:對不同區域的日期格式化等。
資料庫標籤庫:可以做訪問資料庫的工作。
XML 標籤庫:用來訪問 XML 檔案的工作,這是 JSTL 標籤庫的一個特點。
函式標籤庫:用來讀取已經定義的某個函式。
此外, JSTL 還提供了 EL 表示式語言( Expression Language )來進行輔助的工作。
說明:在 JSTL 1.1 規範中, JSP2.0 容器已經能夠獨立的理解任何 EL 表示式。 EL 可以獨立出現在 JSP 頁面的任何角落。
EL基本語法——${expression}。
EL使用場景通常如下:
1、 通常在servet中呼叫request.setAttribute(“varName”, “varValue”)
2、 然後在JSP中使用${varName}
3、 簡化方式使用了EL,依次從PageContext,HttpServletRequest,HttpSession,servletContext中查詢varName的屬性對應值。若沒有則返回空字串,若具有同名屬性,取得的是靠前物件中的屬性值。
說明:也可以指定訪問域。如${sessionScope.sampleValue}、${pageScope.color}。
使用EL訪問JavaBean——${beanName.beanVar}
若beanVar是一個引用資料型別,假設beanVar有一個屬性varAttr,則用${beanName.beanVar.varAttr}。
說明:
1:為了實現對應用程式的資料的存取,EL提供了兩種操作:.和[]操作
使用.操作符來獲得有名字的屬性。例如表示式${user.username}表明物件user的username屬性
使用[]操作符來獲得有名字或按數字排列的屬性。表示式${user["username"]}和表示式${user. username }含義相同;表示式${row[0]} 表明row集合的第一個條目。
2: .和[]操作符可以出現在同一個EL表示式中
${bookBean[“blish”].publisherName}
注意:當存取的屬性名稱中包含一些特殊字元,如.或-等並非字母或數字的符號,一定要用[]而不能使用. 動態取值的情況,用[]而不是.
使用EL訪問集合物件——${collection[elementName]},其中若collection是陣列或List,則elementName是整數,若collection是Map,則elementName是鍵值。
禁用 EL 計算的語法為:<%@ page isELIgnored ="true|false" %> true表示禁用。
pageContext:提供對頁面屬性的訪問
param:返回客戶端的請求引數的字串值
paramValues:返回對映至客戶端的請求引數的一組值
header:返回一個請求標題名稱,然後將該值對映至單個字串值
headerValues:返回對映至請求標題的一組值
cookie:返回對映至單個 Cookie 物件的 Cookie 名稱
initParam:返回對映至單個值的上下文初始化引數名稱
pageScope:返回頁面範圍的變數名,這些名稱已對映至相應的值
requestScope:返回對請求物件的屬性的訪問許可權
sessionScope:返回會話範圍的變數名,這些名稱已對映至相應的值
applicationScope:返回應用範圍內的變數,並將變數名對映至相應的值
說明:11 個隱含對像幾乎包含了 Web 應用的所有基本操作,若一個表示式不使用這些變數而直接使用引數名,那麼就採用就近原則。該表示式將使用最近取得的引數值。
三.EL表示式的操作符
EL 表示式中還有許多操作符可以幫助完成各種所需的操作,之前的示例中“ . ”、“ [] ”就是其中的兩個,下面將用表 9.1 來展示所有操作符及它們各自的功能。
表 9.1 EL 表示式的操作符
操作符
|
功能和作用
|
.
|
訪問一個 bean 屬性或者 Map entry
|
[]
|
訪問一個陣列或者連結串列元素
|
()
|
對子表示式分組,用來改變賦值順序
|
? :
|
條件語句,比如:條件 ?ifTrue:ifFalse
如果條件為真,表示式值為前者,反之為後者
|
+
|
數學運算子,加操作
|
-
|
數學運算子,減操作或者對一個值取反
|
*
|
數學運算子,乘操作
|
/ 或 div
|
數學運算子,除操作
|
% 或 mod
|
數學運算子,模操作 ( 取餘 )
|
== 或 eq
|
邏輯運算子,判斷符號左右兩端是否相等,如果相等返回 true ,否則返回 false
|
!= 或 ne
|
邏輯運算子,判斷符號左右兩端是否不相等,如果不相等返回 true ,否則返回 false
|
< 或 lt
|
邏輯運算子,判斷符號左邊是否小於右邊,如果小於返回 true ,否則返回 false
|
> 或 gt
|
邏輯運算子,判斷符號左邊是否大於右邊,如果大於返回 true ,否則返回 false
|
<= 或 le
|
邏輯運算子,判斷符號左邊是否小於或者等於右邊,如果小於或者等於返回 true ,否則返回 false
|
>= 或 ge
|
邏輯運算子,判斷符號左邊是否大於或者等於右邊,如果大於或者等於返回 true ,否則返回 false
|
&& 或 and
|
邏輯運算子,與操作賦。如果左右兩邊同為 true 返回 true ,否則返回 false
|
|| 或 or
|
邏輯運算子,或操作賦。如果左右兩邊有任何一邊為 true 返回 true ,否則返回 false
|
! 或 not
|
邏輯運算子,非操作賦。如果對 true 取運算返回 false ,否則返回 true
|
empty
|
用來對一個空變數值進行判斷 : null 、一個空 String 、空陣列、 空 Map 、沒有條目的 Collection 集合
|
func(args)
|
呼叫方法 , func 是方法名, args 是引數,可以沒有,或者有一個、多個引數 . 引數間用逗號隔開
|
四.EL表示式在JSTL中應用
在JSTL的屬性值中使用表示式有三種方式。
1、 value屬性包含一個表示式
<some:tag value="${expr}"/>
在這種情況下,表示式值被計算出來並根據型別轉換規則賦值給value屬性。比如:<c:out value="${username}" />中的${username}就是一個EL,它相當於JSP語句<%=request.getAttribute(“username”)%>或<%=session.getAttribute(“username”)%>
2、 value屬性包含一個或多個屬性,這些屬性被文字分割或圍繞
<some:tag value="some${expr}${expr}text${expr}"/>
在這種情況下,表示式從左到右進行計算,並將結果轉換為字串型(根據型別轉換規則),並將結果賦值給value屬性
3、value屬性僅僅包含文字
<some:tag value="sometext"/>
在這種情況下,字串型屬性value將根據型別轉換規則轉換為標籤所希望的型別。
相關文章
- 兩年的工作回顧
- 基礎回顧
- Git指令回顧Git
- 自學javase的回顧(2/10)Java
- 串知識的重新回顧
- [譯]回顧ESLint的成功EsLint
- javascript中陣列的回顧JavaScript陣列
- [譯] 回顧 ESLint 的成功EsLint
- 活動精彩回顧|GopherChina 2019乾貨回顧!Go
- js回顧:原型鏈JS原型
- PHP 回顧之 cookiePHPCookie
- 回顧 crash log 分析
- javascript知識回顧JavaScript
- flex知識回顧Flex
- 5. SQL回顧SQL
- SpringMVC 回顧servletSpringMVCServlet
- GoogleDeveloperDay 回顧GoDeveloper
- 回顧工作5年
- PLSQL儲存回顧SQL
- mybatis---回顧jdbcMyBatisJDBC
- 前端工作兩年多的回顧前端
- 關於成都 Gopher Meetup 的回顧Go
- PHP執行流程回顧PHP
- 程式碼大全回顧篇...
- 回顧 Firefox 歷史Firefox
- PHP回顧之ComposerPHP
- openLayers 3知識回顧
- oracle打補丁回顧Oracle
- Docker 核心知識回顧Docker
- Java基本語法回顧Java
- 【指標】-簡單回顧指標
- 【CSS】CSS前期回顧(2)CSS
- 【CSS】CSS前期回顧(1)CSS
- Redis重要引數回顧Redis
- Java(SE)內容回顧Java
- 成都亞馬遜AWSome Day回顧亞馬遜
- 什麼是元回顧?
- 14-oop方法回顧OOP