JSTL标签库学习总结

 

最近没什么项目,部门经理开会让我们复习学习EE的知识,每个人分一部分自行研究总结,今天总结了一下JSTL标签的使用,方便以后工作中用到时复习使用。

 

一、为什么要使用JSTL

JSP中,EL表达式是个很方便的工具,但是EL表达式功能很有限制(例如不能遍历集合等)JSTL作为最基本的标签库,JSTL库中提供了一系列的JSP标签,实现了最基本的功能,例如集合的遍历、数据的输出、字符串的处理、数据的格式化等。

二、JSTL的构成

JSTL包括corefntsqlXML4个标签库,以及一个fn方法库。在Java EE 1.4之前,JSP中使用JSTL需要添加JSTL的类库,从Java EE 5开始,内置JSTL的支持,可以直接使用。

三、JSTLcore标签库

Core标签库是JSTL的核心标签库,或者说是基本标签库,实现了最基本的功能。在使用core标签库下的标签时,需要在JSP文件中引入标签库,如:<%@ taglib uri=”http://java.sun.com/jsp/jstl/core” prefix=”c”%>

以下为core标签库下各主要标签的使用介绍:

1<c:out/>标签:JSTL中使用out标签输出数据。

       <c:out value=”${param.action}”></c:out>

       注:out标签还有另外两个属性:defaultescapeXml。如果value属性的值不存在,会输出default属性的值。如果excapeXmltrue,则会对输出的内容进行XML编码。

2<c:if/>标签条件判断的标签,判断条件写在test属性中。

       <c:if test=”${param.action == “add”}”>

              ……..

       </c:if>

       <c:if test=”${param.action == “edit”}”>

              ……..

       </c:if>

3<c:choose/><c:when/><c:otherwise>标签

       <c:choose>

              <c:when test=”${param.aciton}”>

                     When标签输出

             </c:when>

              <c:otherwise>

                     Otherwise标签输出

              </c:otherwise>
       </c:choose>

4<c:forEach/>标签为循环标签,items属性里是集合类对象或者是数组。

       显示偶数:

       <c:forEach var=”num” begin=”2” end=”100” step=”2”>

              <div>${num}</div>

       </c:forEach>

       遍历List

       <c:forEach istem=”${personList}” var=”person”>

              <tr>

                     <td>${person.id}</td>

                     <td>${person.name}</td>

                     <td>${person.age}</td>

                     <td>${person.sex}</td>

                     <td>${person.city}</td>

                     <td>${person.birthday}</td>

              </tr>

       </c:forEach>

       遍历Map对象:

       <c:forEach var=”item” items=”${header}”>

              <tr>

                     <td>${item.key}</td>

                     <td>${item.value}</td>

              </tr>

       </c:forEach>

       <c:forEach>标签的varStatus属性可以实现隔行变色的功能。如下:

       <c:forEach item=”${persoinList}” vae=”person” varStatus=”varStatus”>

              <tr bgcolor=”${varStatus.index % 2 == 1 ? ‘#EFEFEF’ : ‘#FFFFFF’}”>

                     <td>${varStatus.current.id}</td>

                     …………

              </tr>

       </c:forEach>

       注:varStatus的属性:indexcountfistlastcurrentbeginendstep

5<c:forTokens/>标签为循环标签,items属性里面是字符串,会被delims属性分割成多个字符串,forTokens就是遍历这些字符串。

     <c:forTokens items=”Jane,Tomi,Andy,Hedrix,McCarteny,Lenno,Court,Ben” delims=”,” var=”item” varStatus=”varStatus” begin=”1” end=”7” step=”2”>

            <tr>

                   <td>${varStatus.index}</td>

                   <td>${item}</td>

            </tr>

     </c:forTokens>

6<c:set/>实现计数器,set标签既可以声明一个不存在的对象,也可以修改一个已经存在的对象,还可以只修改该对象的某个属性,前提是该属性是可写的(即有对应的setter方法)

     <c:set var=”totalCount” value=”${totalCount + 1}” scope=”application”></c:set>

     <c:set var=”count” value=”${count + 1}” scope=”session”></c:set>

     本网站总访问人数:${totalCount} <br/>

     其中您的访问次数:${count} <br/>

     注:target作用类似于var,不同的是target只能用来操作Java Bean或者Maptarget只能修改已存在的Java Bean的属性或者Map的内容,而不能创建,因此如果targetnull,会抛出异常。Targetvar二者不能同时使用。

7<c:remove/>标签与set标签作用正好相反。可以从pagerequestsessionapplication等删除所有类型的数据。

     <% request.setAttribute(“somemap”, new HashMap()); %>

     <c:remove var=”somemap” />

     ${somemap == null ? ‘somemap 已经被删除’ : ‘somemap 没有被删除’}

8<c:catch/>捕捉异常

     <c:catch var=”e”>

            <c:set target=”someBean” property=”someProperty” value=”Some Value”>

            </c:set>

     </c:catch>

     <c:if test=”${e != null}”>

            程序抛出了异常${e.class.name},原因:${e.message}

     </c:if>

9<c:import/>导入网络资源

     <c:import var=”baidu” url=”http://www.baidu.com” charEncoding=”gbk” cope=”request”/>

   Baidu的源代码为:<br/><br/>

     <c:out value=”${ baidu}” escapeXml=”true”></c:out>

10<c:url/>标签,JSP中,如果客户浏览器不支持Cookie,则可以使用request.encodeURL()方法对URL进行编码,使该客户也能使用Session功能,这叫做URL重写。url标签的作用就是实现类似功能。

     <c:url value=”/images/bg.gif”>

11<c:redirect/>标签用于实现Redirect重定向功能。

     <c:redirect url=”http://www.baidu.com” ></c:redirect>

12<c:param/>标签,有时候重定向到页面需要参数,这时候可以配合param标签一块使用。Param标签专门用于设置参数。

     <c:redirect url=”http://www.baidu.com” >

            <c:param name=”wd” value=”音乐”></c:param>

            <c:param name=”cl” value=”3”></c:param>

</c:redirect>

四、JSTLfnt标签库

Fnt的标签为辅助性功能标签。Fnt英文全称为format。在使用fnt标签库下的标签时,需要在JSP文件中引入标签库,如:<%@ taglib uri=”http://java.sun.com/jsp/jstl/fnt” prefix=”fnt”%>

以下为fnt标签库下各主要标签的使用介绍:

1<fnt:requestEncoding/>设置编码

       <fmt:requestEncoding value=”UTF-8” />

2<fmt:setLocale/>显示所有地区的数据格式,用于设定Locale

       <fmt:setLocale value=”${locale}”/>

3<fmt:timeZone/>显示全球时间,Locale只是影响到时间的格式,TimeZone会影响到时间的值,timeZone标签只对标签内的代码有效。

     <fmt:timeZone value=”Asia/Shanghai”>

       中间为timeZone标签生效的作用域

</fmt:timeZone>

4<fmt:setTimeZone>设置时区,如果需要设置全局的Time Zone,需要使用setTimeZon标签。

5<fmt:bundle/><fmt:message/><fmt:param/>资源国际化

     Java中使用ResourceBundle类解决i18n(国际化)的问题,把所有的中文提示都放在messages_zh_CN.properties文件中。JSTL提供了bundle标签,message标签与param标签来实现该功能。

     <fmt:bundle basename=”messages”>

       <fmt:message key=”prompt.hello”>

              <fmt:param value=”yiyu986”></fmt:param>

       </fmt:message> <br/>

       <fmt:message key=”prompt.greeting”></fmt:message>

     </fmt:bundle>

6<fmt:setBundle/>标签,bundle标签只对标签内部的message标签有效,而setBundle标签对所有的message标签有效。

     <fmt:setBundle basename=”message” var=”resource” scope=”request”/>

     <fmt:message bundle=”{resource}” key=”prompt.hello”>

              <fmt:param>yiyu986</fmt:param>

     </fmt:message>

     <fmt:message bundle=”${resource}” key=”prompt.greeting”></fmt:message>

7<fmt:formatNumber/>显示不同地区的各种数据格式,formatNumber标签能够根据不同的Locale输出不同的格式。

8<fmt:parseNumber/>解析数字,parseNumber标签与formatNumber标签功能刚好相反,formatNumber把数字转为字符串,parseNumber标签把字符串转为数字。

     <fmt:parseNumber value=”1,000”></fmt:parseNumber> <br/>

     <fmt:parseNumber value=”1,000” parseLocale=”de”></fmt:parseNumber> </br>

9<fmt:formatDate/>格式化日期,用于将日期格式化为指定格式的字符串。

     <jsp:useBean id=”currDate” class=”java.util.Date”></jsp:useBean>

     <fmt:formatDate value=”${currDate}” />

     <fmt:formatDate value=”${currDate}” pattern=”yyyy/MM/dd HH:mm:ss:sss”>

     </fmt:formatDate>

10<fmt:parseDate/>解析日期,将字符串转化为时间

     <fmt:parseDate value=”2008-12-12”></fmt:parseDate>

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章