JSTL:JSP Standard Tag Library:JSP标准标签库

JSP标准标签库(JSTL)是一组有效的JSP标签,它封装了很多JSP应用程序的核心功能。

JSTL支持普通、结构任务,如迭代和条件,操作XML文件标签,国际化标签,和SQL标签。它也提供了一个整合现有JSTL标签和自定义标签的框架。

JSTL标签根据它们的功能进行分类,划分到JSTL标签库中,当创建一个JSP页面时,可以使用这些标签:

  • 核心标签库
  • 格式标签库
  • SQL标签库
  • XML标签库
  • JSTL函数标签库

一、安装JSTL标签库

如果使用的是Apache Tomcat容器,然后遵循以下两个简单的步骤:

  • Apache Standard Taglib,下载JAR包。
  • 复制JAR文件到应用程序的webapps\ROOT\WEB-INF\lib目录中。如果是Eclipse项目的,复制到lib文件夹中。

为了使用所有的库,必须在要使用该库的每个JSP页面的头部中引入指令。

针对POM项目,可以有如下依赖:



<!-- https://mvnrepository.com/artifact/org.apache.taglibs/taglibs-standard-impl -->
<dependency>
<groupId>org.apache.taglibs</groupId>
<artifactId>taglibs-standard-impl</artifactId>
<version>1.2.5</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.apache.taglibs/taglibs-standard-jstlel -->
<dependency>
<groupId>org.apache.taglibs</groupId>
<artifactId>taglibs-standard-jstlel</artifactId>
<version>1.2.5</version>
</dependency>


说明:第一个依赖是javax对jstl的接口以及apache对这些接口的实现。第二个是apache对el语言的实现,并且包含了javax接口的依赖。

POM的第二种选择:



<!-- https://mvnrepository.com/artifact/javax.servlet/jstl -->
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>jstl</artifactId>
<version>1.2</version>
</dependency>


 说明:一个包包含了javax的接口以及jstl的实现和el语言的实现。不过版本只停留在1.2版本。

二、核心标签库

核心标签库是被广泛使用的JSTL标签库。下面是在JSP页面中引入核心标签库时需要使用的指令:



<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>


接下来的是核心标签库的标签:

标签

描述

<c:out >

类似于java表达式,但是表达式。

<c:set >

在某个范围内设置表达式的值。

<c:remove >

删除一个域变量(从一个特殊的被指定的范围)。

<c:catch>

抛出任何发生在它的主体中的异常,并且有选择的公开它。

<c:if>

简单的条件标签,如果提供的条件是true,则执行标签体的内容。

<c:choose>

简单的条件标签,用标签和建立一个互斥条件操作的上下文。

<c:when>

的子标签,如果它的条件为“true”,则运行标签体的内容。

<c:otherwise >

的子标签,它出现在标签之后,只有当先前的条件结果为“false”运行它。

<c:import>

检索绝对或相对的URL并且显示它的内容到其他的页面,在“var”中的一个String类型,或者在“varReader”中的一个Reader类型。

<c:forEach >

基本的迭代标签,接受多种不同的集合类型,支持子集和其他的功能。

<c:forTokens>

迭代使用分隔符,分隔提供的定界符。

<c:param>

添加一个参数到包含“import”标签的URL。

<c:redirect >

重新定向到的一个新的URL。

<c:url>

创建一个带有选项查询参数的URL。

标签详解:​​javascript:void(0)​

三、格式标签库

JSTL的格式标签库是用于格式化和显示国际化网址的文本、日期、时间和数字。下面是在JSP页面中引入格式标签库时需要使用的指令:



<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>


接下来的是格式标签库的标签:

标签

描述

<fmt:formatNumber>

用特定的精度或格式呈现数值。

<fmt:parseNumber>

将一个表示数值、货币或百分比格式化字符串解析成数值对象。

<fmt:formatDate>

将日期和/或时间对象格式化成指定的风格和模式

<fmt:parseDate>

将用字符串表示的日期和/或时间解析成日期对象。

<fmt:bundle>

使用它的标签体来加载一个资源包。

<fmt:setLocale>

在区域配置变量中存储指定的区域。

<fmt:setBundle>

加载一个资源包并且将其存储在指定作用域或者资源包配置变量中。

<fmt:timeZone>

在标签体的内容中,对指定的时区进行时间格式化和解析操作。

<fmt:setTimeZone>

将指定的时区存储在时区配置变量中。

<fmt:message>

显示国际化的信息。

<fmt:requestEncoding>

设置请求中字符的编码格式。

标签详解:​​javascript:void(0)​

四、SQL标签库

JSTL的SQL标签库提供了标签给交互的关系数据库(RDBMSs)如Oracle、mySQL或Microsoft SQL Server。

下面是在JSP页面中引入格式标签库时需要使用的指令:



<%@ taglib prefix="sql" uri="http://java.sun.com/jsp/jstl/sql" %>


接下来的是格式标签库的标签:

标签

描述

<sql:setDataSource>

创建一个简单的只适合原型的数据源。

<sql:query>

在它的标签体中或通过SQL属性,执行定义的SQL查询操作。

<sql:update>

在它的标签体中或通过SQL属性,执行定义的SQL更新操作。

<sql:param>

将SQL语句中的一个参数设置为指定的值。

<sql:dateParam>

将SQL语句中的一个参数设置为指定的java.util.Date值。

<sql:transaction>

为嵌套数据库操作元素提供了一个共享连接,建立执行所有语句组成一个事务。

标签详解:​​javascript:void(0)​

五、XML标签库

JSTL的XML标签库提供了创建和操纵XML文档的JSP-centric方式。下面是在JSP页面中引入XML标签库时需要使用的指令:

对于交互的XML数据,JSTL的XML标签库有自定义标签。它包括解析XML、转换XML数据和基于XPath语言表达式的流程控制。



<%@ taglib prefix="x" uri="http://java.sun.com/jsp/jstl/xml" %>


在处理这个例子之前,应该需要复制以下两个XML和XPath相关的库到\lib中:

针对POM项目,可以有如下依赖:



<!-- https://mvnrepository.com/artifact/xerces/xercesImpl -->
<dependency>
<groupId>xerces</groupId>
<artifactId>xercesImpl</artifactId>
<version>2.11.0</version>
</dependency>
<!-- https://mvnrepository.com/artifact/xalan/xalan -->
<dependency>
<groupId>xalan</groupId>
<artifactId>xalan</artifactId>
<version>2.7.2</version>
</dependency>


接下来的是格式标签库的标签:

标签

描述

<x:out>

类似于java表达式 ,但是XPath表达式。

<x:parse>

要么通过属性要么在标签体中,用于解析特定的XML数据。

<x:set>

设置XPath表达式的变量值。

<x:if>

计算测试的XPath表达式,如果它是true,就执行它的标签体中的内容。如果测试条件是false,忽略这个标签体中内容。

<x:forEach>

在XML文件中循环顶点。

<x:choose>

简单的条件标签,用标签和建立一个互斥条件操作的上下文。

<x:when>

的子标签,如果它的条件为“true”,则运行标签体的内容。

<x:otherwise>

的子标签,它出现在标签之后,只有当先前的条件结果为“false”运行它。

<x:transform>

应用一个 XSL 转换到一个XML文件中。

<x:param>

在XSLT样式表中使用转换标签设置参数。

标签详解:​​javascript:void(0)​

六、JSTL函数标签库

JSTL函数标签库包含了大量的标准函数,其中大多数都是御用字符串处理的函数。下面是在JSP页面中引入JSTL函数标签库时需要使用的指令:



<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %>


接下来的是JSTL函数标签库的标签:

函数

描述

fn:contains()

判断输入的字符串是否包含指定的子字符串。

fn:containsIgnoreCase()

判断输入的字符串是否包含指定的子字符串,判断时忽略大小写。

fn:endsWith()

判断输入的字符串是否以指定的字符串作为后缀。

fn:escapeXml()

忽略字符串中的XML标签。

fn:indexOf()

返回字符串在指定的字符串第一次出现的位置。

fn:join()

连接数组中所有的元素到一个字符串中。

fn:length()

返回集合中的项数或者字符串的字符数。

fn:replace()

返回用输入字符串替换到给定的字符串所有出现的位置中所得到的新字符串。

fn:split()

将一个字符串分割成子字符串数组。

fn:startsWith()

判断输入的字符串是否以指定的字符串作为开头。

fn:substring()

返回字符串的子串

fn:substringAfter()

返回在指定子字符串之前的字符串的子串

fn:substringBefore()

返回在指定子字符串之后的字符串的子串

fn:toLowerCase()

转换字符串中的所有字符为小写字符

fn:toUpperCase()

转换字符串中的所有字符为大写字符

fn:trim()

去除字符串两端的空格

测试工程:​​https:///easonjim/5_java_example/tree/master/jspbasics/test17/jstl​