JSP2.0 tag使用
1.使用Servlet2.4/jsp2.0
1. 確定Web Container支持Serverlet2.4, 復制支持jstl 1.1版本的jstl.jar,standard.jar(可查閱meta-inf)到web-inf/lib。
2. 在Web.xml,Root節點改為
<web-app version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee
http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd ">
3.在jsp中,對core,ftm taglib的引入改為
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"% >
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt"% >
2.直接在html里面使用EL,而不是<c:out value="">
充分使用JSP2.0的EL,直接在html中寫${book} 而不是<c:out value="${book}">將獲得簡潔無比,可比美velocity,freemarker的界面。
3.新增的Function標簽
Function標簽里最有用的一項是取得List,Map的size了。另外有一些StringUtils和Collection的函數。
JSTL里面不給調用對象除getXXX()外的任何方法真是件很讓讓人郁悶的事情!!
<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions"%>
${fn:length(myList)}
4.其他的EL知識點
4.1 EL的運算符
除了最基本的算術運算符,邏輯運算符,比較運算符外,還有一個empty運算符,用來判斷變量是否為null 或list, map的size 是否為零。
<c:if test="${not empty myList}">
EL的運算符都有文字和符號兩種版本,如|| 和 or, >= 和 ge,適用于不能使用文字或符號的時候。
4.2 []與. 兩種訪問屬性或元素的方式
${book.name}與${book["name"]}等價。
${book["name"]}主要用于"name"串為變量,或者字符串中含有"."字符的情況
如 ${myMap[order.status]} 是訪問Map元素的一種很重要的方式。
4.3 list與map
orderList[0] 返回第一個元素
用key和value遍歷map
<c:forEach var="entry" items="${myMap}">
<option value="${entry.key}">${entry.value}</option> </c:forEach>
4.4.訪問靜態變量
EL本身不支持靜態變量訪問,變通的方法是寫一個tag,將某個類的靜態變量反射到一個map中, 如http://www.javaranch.com/journal/200601/Journal200601.jsp#a3
不過使用Map將失去靜態變量編譯期安全的意義,因此還是建議在這種情況下,使用普通JSP,見showOrder.jsp
posted on 2007-04-18 17:43 小雨不打傘 閱讀(1883) 評論(0) 編輯 收藏 所屬分類: web學習心得