天天看點

EL表達式學習筆記${student.name}

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" 
	//這樣将會是源代碼原封不動的輸出,而浏覽器不會對其進行解析。
           

繼續閱讀