JSP学习笔记(四):JSTL标签

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():获取字符歘、数组、集合的长度。




郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。