jstl和el表達式

jstl和el表達式都是用來替代jsp頁面中的複雜代碼的,在學習他們時,通常是先學el表達式。

EL即expression language (表達式語言),它的基本語法格式是用美元符號($)定界,內容包括在花括號({})中,即 ${對象名.屬性名},el的另一種格式是 ${對象名['屬性名']},一般採用的是前一種格式。

EL 除了提供方便存取變量的語法之外,它另外一個方便的功能就是:自動轉變類型,即它能根據{}中的內容轉變成相應的數據類型,如:{}中是boolean型,如果傳過來的參數不是boolean,經過el表達式自動轉成boolean。

EL隱藏對象
pageContext   PageContext 實例對應於當前頁面的處理
pageScope   與頁面作用域屬性的名稱和值相關聯的Map類
requestScope  與請求作用域屬性的名稱和值相關聯的Map類
sessionScope  與會話作用域屬性的名稱和值相關聯的Map類
applicationScope  與應用程序作用域屬性的名稱和值相關聯的Map類
param   按名稱存儲請求參數的主要值的 Map 類
paramValues  將請求參數的所有值作爲 String 數組存儲的 Map 類
Header   按名稱存儲請求頭主要值的 Map 類
headerValues  將請求頭的所有值作爲 String 數組存儲的 Map 類
cookie   按名稱存儲請求附帶的 cookie 的 Map 類
initParam   按名稱存儲 Web 應用程序上下文初始化參數的Map類

EL存取器
存取器用來檢索對象的特性或集合的元素。

存取器: 通過 "[]" 或 "." 符號獲取相關數據

例:${userBean.suser}  或  ${userBean[“suser”]}

//獲取輸出bean中的suser屬性值;
${mcType[“id”]} //獲取map中key爲id對應的值;

EL運算符
運算符允許對數據和文字進行組合以及比較。

EL運算符:
類別  運算符
算術運算符  +、-、*、/(或 div)和 %(或 mod)
關係運算符  ==(或eq)、!=(或ne)、<(或lt)、>(或gt)、<=(或le)    和  >=(或ge)
邏輯運算符  &&(或 and)、||(或or)和 !(或 not)
驗證運算符  empty
驗證運算符(empty):對於驗證數據特別有用。empty 運算符采用單個表達式作爲其變量(也即,${empty input}),並返回一個布爾值,該布爾值表示對表達式求值的結果是不是“空”值。求值結果爲 null 的表達式被認爲是空,即無元素的集合或數組。如果參數是對長度爲零的 String 求值所得的結果,則 empty 運算符也將返回 true。

 EL文字

文字表示固定的值 — 數字、字符、字符串、布爾型或空值。

在 EL 表達式中,數字、字符串、布爾值和 null 都可以被指定爲文字值。字符串可以用單引號或雙引號定界。布爾值被指定爲 true 和 false

JSTL是什麼

JSTL(JSP Standard Tag Library,JSP標準標籤庫)是一個不斷完善的開放源代碼的JSP標籤庫,是由apache的jakarta小組來維護的。JSTL1.0 由四個定製標記庫(core、format、xml 和 sql)和一對通用標記庫驗證器組成。core 標記庫提供了定製操作,通過限制了作用域的變量管理數據,以及執行頁面內容的迭代和條件操作。它還提供了用來生成和操作 URL 的標記。format 標記庫定義了用來格式化數據(尤其是數字和日期)的操作。它還支持使用本地化資源束進行JSP頁面的國際化。xml 庫包含一些標記,這些標記用來操作通過XML表示的數據,而 sql 庫定義了用來查詢關係數據庫的操作。 兩個 JSTL 標記庫驗證器允許開發人員在其 JSP 應用程序中強制使用編碼標準。

注意:1.如果要使用JSTL,則必須引用jstl.jar和 standard.jar兩個包。

2.還要在jsp頁面中引用標籤庫:<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>

jstl中最重要的兩個標籤就是if和forEach,只要使用jstl基本上都會要用到這兩個標籤

使用if標籤: 只有if沒有else

<span style="font-size:14px;"><span style="white-space:pre">		</span><c:forEach items="${list} }" var="p" varStatus="vs">
			<c:if test="${vs.index%2==0} ">
				<div><font color="red">${p.id} ${p.uname }  ${p.address.province }  ${p.address.city }</font></div>
			</c:if>
			<c:if test="${vs.index%2==1 }">
				<div><font color="black">${p.id} ${p.uname }  ${p.address.province }  ${p.address.city }</font></div>
			</c:if>
		</c:forEach></span>

使用foeEach標籤: 可以嵌套循環

<span style="font-size:14px;"><span style="white-space:pre">		</span><c:forEach items="${map }" var="cls">
			<div>${cls.key }</div>
			<c:forEach items="${cls.value }" var="p">
				<div>  ${p.id} ${p.uname }  ${p.address.province }  ${p.address.city }</div>
			</c:forEach>
		</c:forEach></span>






發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章