JSTL
目前常用的版本是JSTL1.1,包含5个tld文件
c.tld:c.tld称为核心标记库,包含一些Web应用常用标记,如循环、分支、表达式赋值和基本输入输出等,是最常使用的标记库。
fmt.tld:fmt.tld称为格式化/国际化标记库,包括用来解析数据的标记,如日期等。
sql.tld:sql.tld称为数据库标记库,包含访问数据库的标记。
x.tld:x.tld称为XML标记库,包含被用来访问XML元素的标记。
fn.tld:fn.tld称为函数标记库,包含了一些常用的函数,可以直接调用,例如,截取字符串等。
注意:JSTL在用时,必须有JSTL的jar 包
JSTL位置: jstl-1.2.jar/META-INF/c.tld
JSP使用JSTL时要引包:
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
注意:引包uri去c.tld里面的12行去找http://java.sun.com/jsp/jstl/core
注意:如果没有看到JSTL标签运行出来的内容,那么就往Tomcat中的lib包里复制jstl-1.2.jar包, 重启Tomcat,在试
常用标签库
C标签库中有:
<c:forEach> <c:forTokens> <c:if> <c:choose>
<%@ taglib prefix=“c”
uri=“http://java.sun.com/jsp/jstl/core”%>
fmt标签库中有:
fmt:formatDate
<%@ taglib prefix=“fmt”
uri=“http://java.sun.com/jsp/jstl/fmt”%>
取值遍历集合结果
for
<c:forEach items="${requestScope.list } var="t">
${t.name}
</c:forEach>
注意: User类中的所有属性都要开头字母小写,如果开头字母大写,那么就会在forEach时,报错,报从User类中找不到这个属性
if
<c:if test="${t.pwd == 22 }">
hello word !!
</c:if>
这里没有else,只能无限if
迭代分隔符的
</c:if>
<c:forTokens items="${reuestScope.t.call }" delims="-" var="s">
${s }
</c:forTokens>
fmt格式时间
<fmt:formatDate value="${date}" type="both"/>
输出格式: 2010-5-31 23:59:59
<fmt:formatDate value="${date}" type="date"/>
输出格式: 2010-4-1
<fmt:formatDate value="${date}" type="time"/>
输出格式: 23:59:59
<c:choose>、 <c:when>、 <c:otherwise>实现if/else if/else逻辑
<c:choose>
<!-- if -->
<c:when test="${10>2 }">
hello
</c:when>
<!-- if -->
<c:when test="${10>15 }">
hello World
</c:when>
<!-- else -->
<c:otherwise>
hhhh
</c:otherwise>
</c:choose>
JSTL通常与EL连用,这样方便简单,也更加高效