您的位置:首页 > Web前端 > JavaScript

JSTL标签库学习总结

2016-08-16 15:20 246 查看

核心标签库:

流程处理标签:

<c:if>:这个标签可以根据某个表达式的结果,决定是否显示Body内容。<c:if>标签的test属性中可以放置EL表达式,如果表达式的结果是true,则会将<c:if>Body输出。

<c:chosse>、<c:when>、<c:otherwise>:这些标签在某些条件成立时显示某些内容,不成立时就显示另一些内容。<c:when>及<c:otherwise>必须放在<c:choose>标签中,当<c:when>的test运算结果为true时,会输出<c:when>的Body内容,而不理会<c:otherwise>的内容,当<c:choose>中包含多个<c:when>标签,此时,从上 往下进行测试,如果有个<c:when>的test运算结果为true就输出其Body内容,之后的<c:when>就不会做测试。当所有的<c:when>测试都不成立,才会输出<otherwise>的内容。

<c:forEach>:使用这个标签简单的实现Scriplet中Java代码的for循环。标签中items属性可以是数组、Collection、Iterator、Enumeration、Map与字符串,每次会依次从items指定的对象中取出一个元素,指定给var属性设置的变量,之后在<c:forEach>标签Body中使用var属性所设置的变量来取得该元素。

错误处理标签:

如果想在错误发生时,在本网页中捕捉异常,显示相关信息,就可以使用<c:catch>标签

使用<c:catch>将可能产生异常的网页段落包起来,若有异常发生,异常对象将会设置给var属性所指定的名称,这样才可以使用这个异常对象。如下是捕捉一个加法网页类型转换异常的测试代码:

<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<html>
<head>
<title>add page</title>
</head>
<body>
<c:catch var="error">
${param.a} + ${param.b} = ${param.a + param.b}
</c:catch>
<c:if test="${error != null}">
<br><span style="color: red;">${error.message}</span>
<br>${error}
</c:if>
</body>
</html>


网页导入、重定向、URL处理标签:

网页导入:

在JSTL中,可以通过<c:import>标签在运行 时动态导入另一个网页,也可以搭配<c:param>在导入另一个网页时带有参数。如下操作:

<c:import url="add.jsp">
<c:param name="a" value="1" />
<c:param name="b" value="2" />
</c:import>


重定向:

在Servlet/JSP中,必须使用HttpServletResponse的sendRedirect()方法进行重定向,可以使用JSTL的<c:redirect>标签达到相同的作用,如果重定向需要参数,可以通过<c:param>设置,如下使用:

<c:redirect url="add.jsp">
<c:param name="a" value="1" />
<c:param name="b" value="2" />
</c:redirect>


URL处理标签:

当用户关闭cookie功能时,可以利用response的encodeURL()方法进行URL重写来维持使用session进行会话管理。在JSTL中同样可以使用<c:url>标签达到同样的功能,它在用户关闭Cookie功能时,自动用Session ID作URL重写。如下一个计数程序:

<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ page contentType="text/html;charset=UTF-8" language="java" isELIgnored="false" %>
<c:set var="count" value="${sessionScope.count + 1}" scope="session"/>
<html>
<head>
<title>JSP Count</title>
</head>
<body>
<h1>JSP Count ${sessionScope.count}</h1>
<a href="<c:url value='count.jsp'/>">递增</a>
</body>
</html>


同样,如果在URL上需要携带参数,可以搭配<c:param>标签,参数将会被编码后附加在URL上,如下使用:

<c:url value="some.jsp">
<c:param name="name" value="test"/>
</c:url>


属性处理与输出标签:

属性处理:

如果想要在page、request、session、application等范围中设置一个属性,则可以使用<c:set>标签。

如下要设置一个login属性,代表用户已经登陆:

<c:set var="login" value="${user}" scope="session" />


如上使用,value值也可通过EL表达式来进行设置。在使用<c:set>时,不设置scope时,则会以page、request、session、application的范围寻找属性名称,如果在某个范围内找到属性名称,则在该范围设置属性。如果在所有的范围都没有找到属性,则会在page页面中新增属性。如果想要移除某个属性可以使用<c:remove>标签:

<c:remove var="login" scope="session"/>


<c:set>也通过如下设置JavaBean的属性或Map对象的键/值,必须要使用到target属性:

<c:set target="${user}" propert="name" value="${param.name}"/>


输出标签:

<c:out>:输出指定的文字:

<c:out value="${param.message}"/>


<c:out>标签会自动将角括号、单引号、双引号等字符用替待字符取代,该功能由<c:out>的escapeXml属性控制,默认true,若设置为false,就不会替代字符。

同时,使用<c:out>标签可以通过default属性设置EL运算结果为null时默认显示值。

I18N兼容格式标签库:

JSTL提供I18N兼容格式标签库,协助Web应用程序完成国际化功能,提供数字、日期等格式功能,以及区域(Locale)、信息、编码处理等国际化功能的标签

之前有一篇关于程序国际化的博文有说到一些知识,可以进行参考

信息标签:

<fmt:bundle>:属性basename代表默认使用的信息文件

<fmt:message>:属性key指定信息文件中的哪条信息

<fmt:setBundle>:标签中的basename属性设置使用的信息文件,设置的作用于默认是整个页面都有作用,如果在页面中有额外的<fmt:bundle>设置,则以<fmt:bundle>的设置为主

如果在信息文件中某些部分必须动态决定,则可以使用占位字符先替代,在具体使用时在<fmt:message>标签内部再通过<fmt:param>逐一设置占位字符

地区标签:

在JSTL中决定信息文件的顺序如下:

使用指定的Locale对象取得信息文件

根据浏览器Accept-Language标头指定的偏好地区(Prefered locale)顺序,这可以使用HttpServletRequest的getLocales()来取得。

根据后背地区(fallback locale)信息来取得信息文件

使用基础名称取得信息文件

如果要共享Locale信息,可以使用<fmt:setLocale>标签,在value属性上指定地区信息。

格式标签:

<fmt:formatDate>:默认用来格式化日期,属性dateStyle用来指定日期的详细程度,可设置”default”、”short”、”medium”、”long”、”full”。如果想显示时间,则要在type属性上指定”time”或”both”,默认是date。timeStyle属性用来指定时间的详细程度。pattern属性则可自定义格式。

<fmt:timeZone>:可指定时区

<fmt:setTimeZone>:全局的时区指定

<fmt:fromatNumber>:用来格式化数字

<fmt:parseDate>、<fmt:parseNumber>:用来解析日期

XML标签库:

Xpath、XSLT:

XPath是用来寻找XML文件中特定信息的语言,XPath常用的路径表示如下:

路径表示说明
节点名称选择指定名称节点的所有子节点
/从根节点开始选择
//从符合选择的目前节点开始选择结点,无论其出现位置
.选择目前节点
..选择目前节点的父节点
@选择属性
XSLT是将XML文件转换为另一个XML文件、HTML或XHTML的语言

<xsl:template>:定义模板

<xsl:for-each>:逐一选择节点

<xsl:value-of>:取出指定结点的值

解析、设置与输出标签:

<x:parse>:解析XML文件,doc属性指定String或Reader作为XML文件来源,var属性指定解析结果要存储的属性名称,默认会存储在page属性范围,可以使用scope来指定保存范围,也可在<x:parse>的Body放置XML进行解析。

<x:out>:取得XML文件中的信息并输出。属性select必须以XPath表示,以$作为开头,后面接着解析结果存储时的属性名称。

<x:set>:取得值并存储至某个属性范围

流程处理标签:

<x:if>:在属性select指定选择的元素存在时执行

<x:choose>、<x:when>、<x:otherwise>:类似于if……else……

文件转换标签

<x:transform>:直接进行XML文件转换,doc属性指定XML文件,xslt属性是xslt文件

函数标签库

使用EL函数库,必须指定taglib指示元素进行定义

使用EL语法来指定使用那个EL函数,使用如下:

${fn:length()}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  标签 jstl