Java EE 5开始,内置了对JSTL的支持,或者下载 jstl.jar 与 standard.jar
一、Core 核心标签库
引入标签:<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
(一)<c:out/> 标签:输出数据。
1、实例:
<c:out value="${param.action}"></c:out>
2、使用out标签与 EL表达式,其实使用EL表达式即可。
3、default 和 escapeXml 属性
1)default :默认值。如果value 属性的值不存在,会显示 default
属性的值。
2)escapeXml :true的话,则会对输出的内容进行XML编码。只对待特殊字符如“&”,“<”,">"编码。
(二)<c:if/> 标签:判断条件写在 test 属性中。
1、实例:
<c:if test="${param.action == 'add'}">
2、只有当 test 属性的值为 boolean 类型的 true,或者字符串类型的 true (大小写不敏感),if 标签才会返回true。
(三)<c:choose/>、 <c:when/>、<c:otherwise/>标签实现if、else功能。
1、实例:
<c:choose>
<c:when test="${mparam.action == 1}">
when 1 标签输出
</c:when>
<c:when test="${mparam.action == 2}">
when 2 标签输出
</c:when>
<c:otherwise>
otherwise 标签输出
</c:otherwise>
</c:choose>
(四)<c:forEach/>标签:循环标签。
1、显示1~100之间的偶数:num包含2与100
<c:forEach var="num" begin="2" end="100" step="2">
${num}
</c:forEach>
2、遍历List:
<c:forEach var="person" items="${personList}">
${person.id}
${person.name}
</c:forEach>
3、遍历Map:遍历http头信息。header为存储所有header 信息的 Map 类型数据。
<c:forEach var="item" items="${header}">
${item.key}
${item.value}
</c:forEach>
4、varStatus属性。LoopTagStatus类的对象,当前被遍历对象的信息被记录在varStatus里面,通过 varStatus
即可获取当前被遍历对象的信息。
<c:forEach var="person" items="${personList} " varStatus="varStatus " >
${varStatus .index}
${varStatus.current.name}
${person.name}
</c:forEach>
(五)<c:forTokens/>标签:循环标签,循环字符串,类似于 StringTokenizer
<c:forTokens var="item" items="sam,jams,andy,hoo,bob,kevin" delims=","
varStatues="varStatues" begin="1" end ="4" step="2">
</c:forTokens>
(六)<c:set/>标签:var、value、scope、target、property 六个属性
1、var:只能设置 Integer、Double、String 等类型数据。不能接受EL表达式
2、target:设置JavaBean。只接受EL表达式
3、property :JavaBean的一个属性。
(七)<c:remove/>标签:删除
<c:remove var="usrInfo" scope="session">
(八)<c:catch/>标签:捕捉异常
(九)<c:import />标签:导入网络资源
1、类似于 <%include %>指令 和 <jsp:include>,<c:import
/>有类似的功能,并且可以把
internet 上的网页包含进来。
2、url:可以试包含的文件,也可以是网络资源。需要使用 charEncoding 指定网页编码。
<c:import url="http://www.baidu.com/" charEncoding="gb2312" ></c:import>
3、其他属性:var、varReader、context、scope。
<c:import var="baidu" url="http://www.baidu.com/" charEncoding="gb2312" />
<c:out value="${baidu}" escapeXML="true"></c:out>
(十)<c:url />标签:对 Session 进行 url 重写。
1、response.encodeURL():方法对URL进行编码,使不支持Cookie的客户也可以使用Session功能。
2、<c:url value="/images/bg.gif"><c:url>
(十一)<c:redirect />标签:重定向。
1、实例
<c:redirect url="http://www.baidu.com/" context="/jstl"></c:redirect>
2、context:属性默认为当前的ContextPath,可以动态指定。
(十一)<c:param />标签:重定向的参数。
1、实例:
<c:redirect url="http://www.baidu.com/" context="/jstl">
<c:param name="name" value="SAM"></c:param>
<c:param name="id" value="123456"></c:param>
</c:redirect>
二、fmt 标签
引入标签:<%@ taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix="fmt"%>
(一)<fmt:requestEncoding>:设置request的编码
<fmt:requestEncoding value="UTF-8">
(二)<fmt:formatDate>和<fmt:parseDate>:格式化日期
1、<fmt:formatDate>:将日期转化为指定格式的字符串。
2、<fmt:parseDate>:将字符串转化为时间。
(三)<fmt:formatNumber>和<fmt:parseNumber>:格式化数字
1、<fmt:formatNumber>:把数字转化为字符串。
2、<fmt:parseNumber>:把字符串转化为数字。
(四)一些简单标签:
1、<fmt:setLocal>:显示所有地区的数据格式
2、<fmt:timeZone>:显示全球时间
3、<fmt:setTimeZone>:设置时区
4、<fmt:bundle>、<fmt:message>、<fmt:param>:资源国际化
三、fn 方法库
提供一些方法。例如字符串查找,截取等。遵循 fn:methodname()的格式。
(一)fn:contains 和 fn:containsIgnoreCase()方法
1、判断是否包含指定的字符串,相当于String 类的contains方法,必须在EL表达式内使用。
2、实例:
<c:if test="${fn:contains(header['User-agent'],'FireFox')}">
FireFox浏览器
</c:if>
(二)fn:endsWith():
1、判断某个字符串是否以指定的参数结尾。相当于String 的 endsWith()方法。
2、实例:
<c:if test="${fn:endsWith(file.name,'.jpg')}">
jpg图片
</c:if>
(三)其他方法:
1、fn:startWith():字符串以指定参数开始。
2、fn:eacapeXml():实现HTML编码。同<c:out value="" escapeXml="true">
3、fn:indexOf():
4、fn:split():字符串切割成字符数组
5、fn:join():字符数组以参数为界链接成字符串
6、fn:length():获取字符歘、数组、集合的长度。