JSP 2.0 使用指南
如果Web服务器支持, JSP2.0 是最通用方便的模板语言.
1.使用Servlet2.4/jsp2.0
1. 确定Web Container支持Serverlet2.4, 复制jstl-1.1.2.jar,standard-1.1.2.jar到web-inf/lib (可打开jar的meta-inf来看具体版本)。
2. 在Web.xml,Root节点改为
<web-app version="2.4" xmlns="http: xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee
http:
3.在jsp中,对core,ftm taglib的引入改为 (留意多了uri里多了jsp)
<%@ taglib prefix="c" uri="http:% >
<%@ taglib prefix="fmt" uri="http:% >
2.直接在html里面使用EL,而不是<c:out value=""/>
充分使用JSP2.0的EL,直接在html中写${book} 而不是<c:out value="${book}">将获得简洁无比,可比美velocity,freemarker的界面。
3. 不要用<c:url value=""/>
<c:url value=""/> 虽然解决了context-path的问题,但嵌套起来复杂无比.
建议在公共的taglib.jsp 加入
<c:set var="ctx" value="${pageContext.request.contextPath}"/>
然后在使用路径的地方直接编写2
<link href="${ctx}/styles/default.css" type="text/css">
而不是看得眼花的
<link href="<c:url value="/styles/default.css"/>" type="text/css">
4.新增的Function标签
Function标签里最有用的一项是取得List,Map的size了。另外有一些StringUtils和Collection的函数。
<%@ taglib prefix="fn" uri="http:%> ${fn:length(myList)}
JSTL里面不给调用对象除getXXX()外的任何方法真是件很让让人郁闷的事情!!
5.其他的EL知识点
5.1 EL的运算符
除了最基本的算术运算符,逻辑运算符,比较运算符外,还有一个empty运算符,用来判断变量是否为null 或list, map的size 是否为零。
<c:if test="${not empty myList}">
EL的运算符都有文字和符号两种版本,如|| 和 or, >= 和 ge,适用于不能使用文字或符号的时候。
5.2 []与. 两种访问属性或元素的方式
${book.name}与${book["name"]}等价。
${book["name"]}主要用于"name"串为变量,或者字符串中含有"."字符的情况
如 $ {myMap[order.status]}是访问Map元素的一种很重要的方式。
5.3 list与map
orderList[0] 返回第一个元素
用key和value遍历map
<c:forEach var="entry" items="${myMap}">
<option value="${entry.key}">${entry.value}</option> </c:forEach>
5.4.访问静态变量
EL本身不支持静态变量访问,变通的方法是写一个tag,将某个类的静态变量反射到一个map中, 参见铁手剑谱2.3 式
不过使用Map将失去静态变量编译期安全的意义,因此还是建议在这种情况下,使用普通JSP.
5.5.jstl快速参考(常用部分)
更多请参考jstl-quick-reference.pdf
生成下拉选择框
<select name="search_category">
<option value="all">所有</option>
<c:forEach var="category" items="${categorys}">
<option value="${category.id}">${category.name}</option>
</c:forEach>
</select>
格式化数字,保留两位小数
<fmt:formatNumber value="12.333" pattern=".00"/> 12.33
按模式显示当前日期
<jsp:useBean id="now" class="java.util.Date" />
<fmt:formatDate value="${now }" pattern="yyyy-MM-dd"/> 2007-12-19
<fmt:formatDate value="${now }" pattern="yyyy年M月d日"/> 2007年12月19日
非常抱歉!!!
我不知道怎样使用wiki,结果把calvin的wiki页面删掉了,只好注册了一个用户,再重新加上,但作者变成我的了。
不好意思!