EL表達式
EL(Expression Language)表達式語言,用于簡化JSP的輸出。
EL表達式的基本文法:${表達式}
示例:
${student.name}
<h1>姓名:${requestScope.student.name }</h1>
<h2>手機:${requestScope.student.mobile }</h2>
<h2>評級:${requestScope.grade }</h2>
在EL表達式中既不用考慮字元串拼接的問題,也不用考慮包的導入問題。
--requestScope 是EL表達式的作用域對象
<>EL表達式内置四種作用域對象
作用域對象 描述
pageScope 從目前頁面取值
requestScope 從目前請求中擷取屬性值
sessionScope 從目前會話中擷取屬性值
applicationScope 從目前應用擷取全局屬性值
//EL表達式内置四種作用域對象
//忽略書寫作用域對象時,el則按作用域從小到大依次嘗試擷取。
//建議:雖然可以不寫作用域對象,但是為了程式的嚴謹性,應該要寫上
EL表達式的輸出
文法:${[作用域.]屬性名[.子屬性]} //[ ]為可選項
EL表達式支援将運算結果進行輸出。例如:${emp.salary + 300 } ,${ 1<=3&&2>4 }
EL支援絕大多數對象輸出,本質是執行toString()方法
EL輸出參數值
EL表達式内置param對象來簡化參數的輸出
文法:${param.參數名}
JSTL标簽庫
JSTL (JSP Standard Tag Library),JSP标準标簽庫
JSTL用于簡化JSP開發,提高代碼的可讀性與可維護性
JSTL由SUN定義規範,由Apache Tomcat團隊實作。
JSTL需要自己下載下傳,自己安裝。
//http://tomcat.apache.org (隻需下載下傳spec和impl即可)
安裝JSTL标簽庫
将Jar檔案複制到工程的/WEB-INF/lib目錄(推薦)
将jar檔案複制到Tomcat安裝目錄的lib目錄
J2EE它隻定義了标準,具體的實作是由廠商決定的。
JSTL的标簽庫種類
JSTL按功能劃分可分為鹉類标簽庫
類别
核心标簽庫 -core (重要)
格式化輸出标簽庫 -fmt (重要)
SQL操作标簽庫 -sql
XML操作标簽庫 -xml
函數标簽庫 -functions //前兩種非常重要,後面三種現在不常用
核心标簽庫:是JSTL最重要的标簽庫,提供了JSTL的基礎功能
如何引用? 在JSP頁面中,在首行添加 <%@ taglib prefix = “c” uri=“http://java.sun.com/jsp/jstl/core” %>
用于說明我們需要在JSP中使用核心标簽庫。 上面的指令是寫死的,不能更改。
JSTL核心标簽庫在taglibs-standard-impl.jar由META-INF/c.tld定義。
判斷标簽
JSTL核心庫提供了兩組判斷的标簽
<c:if> -單分支判斷
<c:choose>、<c:when>、<c:otherwise> -多分支判斷。
<c:if test = "${ 2>3 }"> //core庫中的标簽,test為測試屬性,EL表達式的值必須為布爾表達式
content1.... //if條件為真,則執行相關操作。
</c:if>
多分枝判斷
<c:choose>
<c:when test = "${ 布爾表達式 }">
<條件成立時執行的内容>
</c:when test>
<c:when test ="${布爾表達式}">
<條件成立時執行的内容>
</c:when test>
<c:otherwise>
<當所有的條件都不成立時,輸出此标簽中的内容>
</c:otherwise>
</c:choose>
JSTL周遊集合
<c:forEach>标簽用于周遊集合(Collection)中的每一個對象。
<c:forEach var='p' items = "${persons}" varStatus = "idx" >
第${idx.index + 1}位 <br/>
姓名:${p.name} 性别:${p.sex} 年齡:${p.age}
</c:forEach>
fmt格式化标簽庫
fmt格式化标簽庫URI:http://java.sun.com/jsp/jstl/fmt
<fmt:formatDate value = " " pattern = "" > 格式化日期标簽
<fmt:formatNumber value = " " pattern = " " > 格式化數字标簽
日期格式化
<!--
formatDate pattern
yyyy - 四位年
MM - 兩位月
dd - 兩位日
hh - 12小時制
HH - 24小時制
mm - 分鐘數
ss - 秒數
SSS - 毫秒
-->
</h2>
<h2>
<fmt:formatDate value="${requestScope.now }" pattern="yyyy年MM月dd日HH時mm分ss秒 SSS毫秒"/>
</h2>
數字格式化:引用數字格式化标準庫
<%@ taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix="fmt" %>
<fmt:formatNumber value="${amt }" pattern="0,000.00"></fmt:formatNumber>元
//數字格式設定位 000,000,000.00的格式
空值的格式化:空值在jsp當中不産生輸出效果,若想要産生輸出效果嗎,則需要實作核心庫當中的标簽
使用的示例如下:
<h2>null預設值:<c:out value="${nothing }" default="無"></c:out></h2>
//當nothing 的值為null時,預設顯示為:無
空值格式輸出還有一個作用,就是可以對html的源碼進行轉義,這樣就能避免被浏覽器解析成頁面
具體做法是:
String html = “
這是一段文字
”
<c:out value=html escapeXml = "true" > </c:out> //escapeXml = "true"
//這樣将會是源代碼原封不動的輸出,而浏覽器不會對其進行解析。