EL 和 JSTL 筆記
一、 EL表達式:
1. 常見用法${表達式},如果裏面是javabean,則直接寫屬性名;也可以是判斷表達式.
2.EL的參數: param, paramvalues. e.g:${user[param.c] }
3. empty:
<1>.空的集合等,"",null都是empty爲true, e.g:${empty ""}==true
4. JavaBean的嵌套:嵌套的JavaBean中注意el的用法,e.g: ${user.addr.street}
5. 如圖:
二、 JSTL:
1. 配置:
<1>. myeclipse集成了jstl,所以不用配置,只需要在jsp頁面指明url,加入以下語句即可:
<%@ taglib prefix=”c” uri=” http://java.sun.com/jsp/jstl/core” %>
<2>. Eclipse沒有實現jstl插件,所以需要配置,配置方法如:
【1】、jstl1.0或以下的版本:
需要將jstl.jar和standard.jar包放入WEB-INF\lib下
在WEB-INF文件夾下放入所用到得.tld文件
在web.xml文件中配置taglib信息
<jsp-config>
<taglib>
<taglib-uri>http://java.sun.com/jstl/core</taglib-uri>
<taglib-location>/WEB-INF/tlds/c.tld</taglib-location>
</taglib>
<taglib>
<taglib-uri>http://java.sun.com/jstl/core-rt</taglib-uri>
<taglib-location>/WEB-INF/tlds/c-rt.tld</taglib-location>
</taglib>
</jsp-config>
在jsp頁面中使用<%@ taglibprefix="c" uri="http://java.sun.com/jstl/core"%>
【2】、對於jstl-1.1以上的版本:
JSTL1.1以上的版本只用在lib中加入下載的jar包(jstl.jar),並在JSP頁面頭部加上這樣一句話:
<%@ taglib uri="http://java.sun.com/jsp/jstl/core"prefix="c" %>,用來指明jar包的URL,
並且,在Web.xml文件中不用做任何配置。
注意:
<1>、如果servlet是2.4版本以上(包含2.4)的則可以直接使用,如果是其他版本的話,jsp的屬性isELIgnored默認值爲true,頁面對el表達式不計算,所以要使用jstl的話,則需要使用isELIgnored="false"屬性.如:<%@page isELIgnored="false"%>
<2>、如何查看jsp和servlet版本可以參見如下方式:tomcat的lib目錄下有兩個jar文件,分別名爲jsp-api.jar和servlet-api.jar。解壓這兩個文件,用Notepad++之類的軟件打開在其中的Meta-Info文件夾下的MANIFEST.MF文件,可以從Specification-Version看出其版本。
2. 使用:
<1>. 簡單用法:(不常見):
(1) <c:out value=”EL” default=”” escapeXML=”true|false”></c:out>
<!—default: value爲空時輸出default內容 -->
(2) <c:set var=”a” value=”new User()” scope=”request|session”></c:set>
(3) <c:set var=”a”> <!-- 表示將set中間的兩個<h2>設爲value -->
<h2>good goodstudy</h2>
<h2>day day up !</h2>
<c:set>
(4) <c:remove var=”a”></c:remove> <!-- 表示在作用域裏刪除a的值 -->
<2>. 重要用法:(很重要):
(1). <c:if test=”EL” >
<h2>滿足test的EL表達式時執行</h2>
</c:if>
(2). < c:choose>
<c:when test=”EL”>
<h2>執行第一行</h2>
</c:when>
<c:when test=”EL”>
<h2>執行第二行</h2>
</c:when>
<c:otherwise>
<h2>執行第三行</h2>
</c:otherwise>
</c:choose>
(3). <c:forEach items=”${user }” var=”temp” varStatus=”status”
begin=”3” end=”list.size()” step=”1”>
<c:if test=”${ status.index==0}”>
第一個:
</c:if>
<c:if test=”{ status.first }”>
第一個:
</c:if>
<c:if test=”{ status.last }”>
最後一個:
</c:if>
${status.count}
${temp}
</c:forEach>
<c:forEach>標籤屬性介紹:
Ø Items : 值是作用域中的key.
Ø var : 相當於for循環中的i變量.
Ø varStatus : var的相關屬性.
Ø begin : 相當於i變量的初始值,默認值0,例如begin=”1” à int i=1;
Ø end : 相當於i變量的最大值,默認值爲items最大值,例如end=”list.size()” à i<list.size();
Ø step : 步長,默認值爲1,相當於i++,例如step=”1” à i++;