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常用的路径表示如下:路径表示 | 说明 |
---|---|
节点名称 | 选择指定名称节点的所有子节点 |
/ | 从根节点开始选择 |
// | 从符合选择的目前节点开始选择结点,无论其出现位置 |
. | 选择目前节点 |
.. | 选择目前节点的父节点 |
@ | 选择属性 |
<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标签库学习总结
- JSTL标签库学习总结
- Web开发之-JSP学习总结-第三篇: JSTL标签
- JavaWeb学习总结-12 JSTL标签语言
- JavaWeb学习总结---JSTL标签库之核心标签
- jstl标签学习总结-以及的用法
- JSTL标签库学习总结
- JSTL学习笔记2---流程控制标签
- Java_WEB开发_struts2学习的总结_Iterate标签遍历
- Java_WEB开发_struts2学习的总结_Iterate标签遍历
- 由找marquee标签所总结的一点学习经验
- Javascript学习笔录13(标签用法总结)
- struts标签总结——持续增加中——边学习编总结
- Struts 1 学习笔记-3-3(JSTL格式化标签库测试)
- JSTL使用总结(1) 核心标签库和SQL标签库
- JSTL使用总结(2) fmt标签库和fn标签库
- JSTL使用总结(2) fmt标签库和fn标签库
- 标签:JSTL 学习应用记录
- 传智播客学习之面试知识点总结-标签
- JSTL标签库学习笔记