以下内容仅供学习使用!
目录
JSTL 简介
JSTL(JavaServer Pages Standard Tag Library,JSP标准标签库)是一个JSP标签集合,封装了JSP应用的通用核心功能。
JSTL支持通用的、结构化的任务,比如迭代,条件判断,XML文档操作,国际化标签,SQL标签。
除了这些,它还提供了一个框架来使用集成JSTL的自定义标签。
同时使用JSLT标签的目的之一就是不希望在 jsp 页面中出现 java 代码。
JSTL 安装与使用
下载方法 :
使用JSTL可以使用安装下载 jar 包的方式,下载好后,导入项目的WEN-INF的lib目录下即可!
JSTL 标签下载地址
也可以使用 Maven jar包管理工具安装使用
<!-- https://mvnrepository.com/artifact/javax.servlet.jsp.jstl/jstl -->
<dependency>
<groupId>javax.servlet.jsp.jstl</groupId>
<artifactId>jstl</artifactId>
<version>1.2</version>
</dependency>
最后在JSP页面中引入核心标签库的代码:
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
一、JSTL标签库 分类
- 核心标签 (用得最多)
- 国际化标签 ( I18N格式化标签 )
- 数据库标签 ( SQL标签,很少使用 )
- XML标签
- JSTL函数 ( EL函数 )
二、核心标签
核心标签库使用说明
JSTL的核心标签库标签共13个,使用这些标签能够完成JSP页面的基本功能,减少编码工作。
从功能上可以分为4类:表达式控制标签、流程控制标签、循环标签、URL操作标签。
(1)表达式控制标签:out
标签、set
标签、remove
标签、catch
标签。
(2)流程控制标签:if
标签、choose
标签、when
标签、otherwise
标签。
(3)循环标签:forEach
标签、forTokens
标签。
(4)URL操作标签:import
标签、url
标签、redirect
标签、param
标签。
核心标签是最常用的 JSTL标签。引用核心标签库的语法如下:
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
表达式控制标签
out
标签
功能:主要是用来输出数据对象(字符串、表达式)的内容或结果。
语法:<c:out value=”要显示的数据对象” [escapeXml=”true|false”] [default=”默认值”]/>
属性:
标签 | 描述 |
---|---|
value | 输出的内容 |
escapeXml | 是否忽略 XML 转义字符 |
导default | 是否使用默认值 |
栗子:
<%@ page language="java" pageEncoding="UTF-8"%>
<%--引入JSTL核心标签库 --%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<!DOCTYPE HTML>
<html>
<head>
<title>JSTL: --表达式控制标签“out”标签的使用</title>
</head>
<body>
<h3><c:out value="下面的代码演示了c:out的使用,以及在不同属性值状态下的结果。"/></h3>
<hr/>
<ul>
<%--(1)直接输出了一个字符串。 --%>
<li>(1)<c:out value="JSTL的out标签的使用" /></li>
<li>(2)<c:out value="<a href='http://www.cnblogs.com/'>点击链接到博客园</a>" /></li>
<%--escapeXml="false"表示value值中的html标签不进行转义,而是直接输出 --%>
<li>(3)<c:out value="<a href='http://www.cnblogs.com/'>点击链接到博客园</a>" escapeXml="false"/></li>
<%--(4)字符串中有转义字符,但在默认情况下没有转换。 --%>
<li>(4)<c:out value="<未使用字符转义>" /></li>
<%--(5)使用了转义字符<和>分别转换成<和>符号。 --%>
<li>(5)<c:out value="<使用字符转义>" escapeXml="false"></c:out></li>
<%--(6)设定了默认值,从EL表达式${null}得到空值,所以直接输出设定的默认值。 --%>
<li>(6)<c:out value="${null}">使用了默认值</c:out></li>
<%--(7)未设定默认值,输出结果为空。 --%>
<li>(7)<c:out value="${null}"></c:out></li>
<%--(8)设定了默认值,从EL表达式${null}得到空值,所以直接输出设定的默认值。 --%>
<li>(8)<c:out value="${null}" default="默认值"/></li>
<%--(9)未设定默认值,输出结果为空。 --%>
<li>(9)<c:out value="${null}"/></li>
</ul>
</body>
</html>
set
标签
功能:主要是用来用于保存数据或结果。
语法:<c:set var="<string>" value="<string>" target="<string>" property="<string>" scope="<string>"/>
属性:
标签 | 描述 |
---|---|
value | 要存储的值 |
target | 要修改的属性所属的对象 |
property | 要修改的属性 |
var | 存储信息的变量 |
scope | var属性的作用域 |
如果指定了target属性,那么property属性也需要被指定。
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<html>
<head>
<title>c:set 标签实例</title>
</head>
<body>
<c:set var="salary" scope="session" value="${2000*2}"/>
<c:out value="${salary}"/>
</body>
</html>
remove
标签
功能:用于移除一个变量,可以指定这个变量的作用域,若未指定,则默认为变量第一次出现的作用域。
语法:<c:remove var="<string>" scope="<string>"/>
属性:
标签 | 描述 |
---|---|
var | 要移除的变量名称 |
scope | 变量所属的作用域 |
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<html>
<head>
<title>c:remove 标签实例</title>
</head>
<body>
<c:set var="salary" scope="session" value="${2000*2}"/>
<p>salary 变量值: <c:out value="${salary}"/></p>
<c:remove var="salary"/>
<p>删除 salary 变量后的值: <c:out value="${salary}"/></p>
</body>
</html>
catch
标签
功能:主要用来处理产生错误的异常状况,并且将错误信息储存起来。
语法:<c:catch var="<string>"> ... </c:catch>
属性:
标签 | 描述 |
---|---|
var | 用来储存错误信息的变量 |
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<html>
<head>
<title>c:catch 标签实例</title>
</head>
<body>
<c:catch var ="catchException">
<% int x = 5/0;%>
</c:catch>
<c:if test = "${catchException != null}">
<p>异常为 : ${catchException} <br />
发生了异常: ${catchException.message}</p>
</c:if>
</body>
</html>
流程控制标签
if
标签
功能:判断表达式的值,如果表达式的值为 true 则执行其主体内容。
语法:<c:if test="<boolean>" var="<string>" scope="<string>"> ... </c:if>
属性:
标签 | 描述 |
---|---|
test | 条件 |
var | 用于存储条件结果的变量 |
scope | var属性的作用域 |
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<html>
<head>
<title>c:if 标签实例</title>
</head>
<body>
<c:set var="salary" scope="session" value="${2000*2}"/>
<c:if test="${salary > 2000}">
<p>我的工资为: <c:out value="${salary}"/><p>
</c:if>
</body>
</html>
c:choose
标签
功能:用于在众多选项中做出选择。
语法:
<c:choose>
<c:when test="<boolean>">
...
</c:when>
<c:when test="<boolean>">
...
</c:when>
...
...
<c:otherwise>
...
</c:otherwise>
</c:choose>
<c:choose>标签没有属性。
<c:when>标签只有一个属性,在下表中有给出。
<c:otherwise>标签没有属性。
属性:
标签 | 描述 |
---|---|
test | 条件 |
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<html>
<head>
<title>c:choose 标签实例</title>
</head>
<body>
<c:set var="salary" scope="session" value="${2000*2}"/>
<p>你的工资为 : <c:out value="${salary}"/></p>
<c:choose>
<c:when test="${salary <= 0}">
太惨了。
</c:when>
<c:when test="${salary > 1000}">
不错的薪水,还能生活。
</c:when>
<c:otherwise>
什么都没有。
</c:otherwise>
</c:choose>
</body>
</html>
when
标签
功能:<c:choose>的子标签,用来判断条件是否成立。
otherwise
标签
功能:<c:choose>的子标签,接在<c:when>标签后,当<c:when>标签判断为false时被执行
循环标签
forEach
标签
功能:更加通用的标签,因为它迭代一个集合中的对象。封装了Java中的for,while,do-while循环。
语法:
<c:forEach items="<object>" begin="<int>" end="<int>" step="<int>" var="<string>" varStatus="<string>">
...
属性:
标签 | 描述 |
---|---|
items | 要被循环的信息 |
begin | 开始的元素(0=第一个元素,1=第二个元素) |
end | 最后一个元素(0=第一个元素,1=第二个元素) |
step | 每一次迭代的步长 |
var | 代表当前条目的变量名称 |
varStatus | 代表循环状态的变量名称 |
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<html>
<head>
<title>c:forEach 标签实例</title>
</head>
<body>
<c:forEach var="i" begin="1" end="5">
Item <c:out value="${i}"/><p>
</c:forEach>
</body>
</html>
forTokens
标签
功能:通过指定分隔符将字符串分隔为一个数组然后迭代它们。
语法:
<c:forTokens items="<string>" delims="<string>" begin="<int>" end="<int>" step="<int>" var="<string>" varStatus="<string>">
属性:
标签 | 描述 |
---|---|
delims | 分隔符 |
<c:forTokens>标签与<c:forEach>标签有相似的属性,不过<c:forTokens>还有另一个属性:
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<html>
<head>
<title>c:forTokens 标签实例</title>
</head>
<body>
<c:forTokens items="google,runoob,taobao" delims="," var="name">
<c:out value="${name}"/><p>
</c:forTokens>
</body>
</html>
URL操作标签
import
标签
功能:提供了所有<jsp:include>
行为标签所具有的功能,同时也允许包含绝对URL。可以包含一个FTP服务器中不同的网页内容。
语法:
<c:import url="<string>" var="<string>" scope="<string>" varReader="<string>" context="<string>" charEncoding="<string>"/>
属性:
标签 | 描述 |
---|---|
url | 待导入资源的URL,可以是相对路径和绝对路径,并且可以导入其他主机资源 |
context | 当使用相对路径访问外部context资源时,context指定了这个资源的名字。 |
charEncoding | 所引入的数据的字符编码集 |
var | 用于存储所引入的文本的变量 |
scope | var属性的作用域 |
varReader | 可选的用于提供java.io.Reader对象的变量 |
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<html>
<head>
<title>c:import 标签实例</title>
</head>
<body>
<c:import var="data" url="http://www.runoob.com"/>
<c:out value="${data}"/>
</body>
</html>
以上程序将会打印
http://www.runoob.com"
页面的源代码
url
标签
功能:将URL格式化为一个字符串,然后存储在一个变量中。这个标签在需要的时候会自动重写URL。
只是用于调用
response.encodeURL()
方法的一种可选的方法。它真正的优势在于提供了合适的URL编码,包括<c:param>
中指定的参数。
语法:
<c:url var="<string>" scope="<string>" value="<string>" context="<string>"/>
属性:
标签 | 描述 |
---|---|
value | 基础URL |
context | 本地网络应用程序的名称 |
var | 代表URL的变量名 |
scope | var属性的作用域 |
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<html>
<head>
<title>c:url 标签实例</title>
</head>
<body>
<h1><c:url>实例 Demo</h1>
<a href="<c:url value="http://www.runoob.com"/>">
这个链接通过 <c:url> 标签生成。
</a>
</body>
</html>
redirect
标签
功能:通过自动重写URL来将浏览器重定向至一个新的URL,它提供内容相关的URL,并且支持c:param
标签。
语法:<c:redirect url="<string>" context="<string>"/>
属性:
标签 | 描述 |
---|---|
url | 目标URL |
context | 接着一个本地网络应用程序的名称 |
如果你需要向 <c:import> 标签传递参数, 请先用 <c:url> 标签来创建URL地址,如下所示:
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<html>
<head>
<title>c:redirect 标签实例</title>
</head>
<body>
<c:redirect url="http://www.runoob.com"/>
</body>
</html>
param
标签
功能:用于在 <c:url>
标签中指定参数,而且与 URL 编码相关。
语法:<c:param name="<string>" value="<string>"/>
属性:
标签 | 描述 |
---|---|
name | URL中要设置的参数的名称 |
value | 参数的值 |
如果想要向<c:param>标签中传递参数,需要先使用<c:url>标签来创建URL: |
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<html>
<head>
<title>c:forTokens 标签实例</title>
</head>
<body>
<h1><c:param> 实例</h1>
<c:url var="myURL" value="main.jsp">
<c:param name="name" value="Runoob"/>
<c:param name="url" value="www.runoob.com"/>
</c:url>
<a href="/<c:out value="${myURL}"/>">
使用 <c:param> 为指定URL发送两个参数。</a>
</body>
</html>
三、格式化标签
JSTL格式化标签用来格式化并输出文本、日期、时间、数字。引用格式化标签库的语法如下:
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>
formatNumber
标签
功能:用于格式化数字,百分比,货币。
语法:
<fmt:formatNumber value="<string>" type="<string>" pattern="<string>" currencyCode="<string>" currencySymbol="<string>" groupingUsed="<string>" maxIntegerDigits="<string>" minIntegerDigits="<string>" maxFractionDigits="<string>" minFractionDigits="<string>" var="<string>" scope="<string>"/>
属性:
标签 | 描述 |
---|---|
value | 要显示的数字 |
type | NUMBER,CURRENCY,或 PERCENT类型 |
pattern | 指定一个自定义的格式化模式用与输出 |
currencyCode | 货币码(当type=”currency”时) |
currencySymbol | 货币符号 (当 type=”currency”时) |
groupingUsed | 是否对数字分组 (TRUE 或 FALSE) |
maxIntegerDigits | 整型数最大的位数 |
minIntegerDigits | 整型数最小的位数 |
maxFractionDigits | 小数点后最大的位数 |
minFractionDigits | 小数点后最小的位数 |
var | 存储格式化数字的变量 |
scope | var属性的作用域 |
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>
<html>
<head>
<title>JSTL fmt:formatNumber 标签</title>
</head>
<body>
<h3>数字格式化:</h3>
<c:set var="balance" value="120000.2309" />
<p>格式化数字 (1): <fmt:formatNumber value="${balance}" type="currency"/></p>
<p>格式化数字 (2): <fmt:formatNumber type="number" maxIntegerDigits="3" value="${balance}" /></p>
<p>格式化数字 (3): <fmt:formatNumber type="number" maxFractionDigits="3" value="${balance}" /></p>
<p>格式化数字 (4): <fmt:formatNumber type="number" groupingUsed="false" value="${balance}" /></p>
<p>格式化数字 (5): <fmt:formatNumber type="percent" maxIntegerDigits="3" value="${balance}" /></p>
<p>格式化数字 (6): <fmt:formatNumber type="percent" minFractionDigits="10" value="${balance}" /></p>
<p>格式化数字 (7): <fmt:formatNumber type="percent" maxIntegerDigits="3" value="${balance}" /></p>
<p>格式化数字 (8): <fmt:formatNumber type="number" pattern="###.###E0" value="${balance}" /></p>
<p>美元 :
<fmt:setLocale value="en_US"/>
<fmt:formatNumber value="${balance}" type="currency"/></p>
</body>
</html>
parseNumber
标签
功能:用来解析数字,百分数,货币。
语法:
<fmt:parseNumber value="<string>" type="<string>" pattern="<string>" parseLocale="<string>" integerOnly="<string>" var="<string>" scope="<string>"/>
属性:
标签 | 描述 |
---|---|
value | 要解析的数字 |
type | NUMBER,CURRENCY,或 PERCENT类型 |
parseLocale | 解析数字时所用的区域 |
integerOnly | 是否只解析整型数(true)或浮点数(false) |
pattern | 自定义解析模式 |
timeZone | 要显示的日期的时区 |
var | 存储待解析数字的变量 |
scope | var属性的作用域 |
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>
<html>
<head>
<title>JSTL fmt:parseNumber 标签</title>
</head>
<body>
<h3>数字解析:</h3>
<c:set var="balance" value="1250003.350" />
<fmt:parseNumber var="i" type="number" value="${balance}" />
<p>数字解析 (1) : <c:out value="${i}" /></p>
<fmt:parseNumber var="i" integerOnly="true" type="number" value="${balance}" />
<p>数字解析 (2) : <c:out value="${i}" /></p>
</body>
</html>
formatDate
标签
功能:用于使用不同的方式格式化日期。
语法:
<fmt:formatDate value="<string>" type="<string>" dateStyle="<string>" timeStyle="<string>" pattern="<string>" timeZone="<string>" var="<string>" scope="<string>"/>
属性:
标签 | 描述 |
---|---|
value | 要显示的日期 |
type | DATE, TIME, 或 BOTH |
dateStyle | FULL, LONG, MEDIUM, SHORT, 或 DEFAULT |
timeStyle | FULL, LONG, MEDIUM, SHORT, 或 DEFAULT |
timeZone | FULL, LONG, MEDIUM, SHORT, 或 DEFAULT |
pattern | 显示日期的时区 |
var | 存储格式化数字的变量 |
scope | var属性的作用域 |
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>
<html>
<head>
<title>JSTL fmt:dateNumber 标签</title>
</head>
<body>
<h3>日期格式化:</h3>
<c:set var="now" value="<%=new java.util.Date()%>" />
<p>日期格式化 (1): <fmt:formatDate type="time" value="${now}" /></p>
<p>日期格式化 (2): <fmt:formatDate type="date" value="${now}" /></p>
<p>日期格式化 (3): <fmt:formatDate type="both" value="${now}" /></p>
<p>日期格式化 (4): <fmt:formatDate type="both" dateStyle="short" timeStyle="short" value="${now}" /></p>
<p>日期格式化 (5): <fmt:formatDate type="both" dateStyle="medium" timeStyle="medium" value="${now}" /></p>
<p>日期格式化 (6): <fmt:formatDate type="both" dateStyle="long" timeStyle="long" value="${now}" /></p>
<p>日期格式化 (7): <fmt:formatDate pattern="yyyy-MM-dd" value="${now}" /></p>
</body>
</html>
parseDate
标签
功能:用于解析日期。
语法:
<fmt:parseDate value="<string>" type="<string>" dateStyle="<string>" timeStyle="<string>" pattern="<string>" timeZone="<string>" parseLocale="<string>" var="<string>" scope="<string>"/>
scope="<string>"/>
属性:
标签 | 描述 |
---|---|
value | 要显示的数字 |
type | NUMBER,CURRENCY,或 PERCENT类型 |
pattern | 指定一个自定义的格式化模式用与输出 |
currencyCode | 货币码(当type=”currency”时) |
currencySymbol | 货币符号 (当 type=”currency”时) |
groupingUsed | 是否对数字分组 (TRUE 或 FALSE) |
maxIntegerDigits | 整型数最大的位数 |
minIntegerDigits | 整型数最小的位数 |
maxFractionDigits | 小数点后最大的位数 |
minFractionDigits | 小数点后最小的位数 |
var | 存储格式化数字的变量 |
scope | var属性的作用域 |
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>
<html>
<head>
<title>JSTL fmt:parseDate 标签</title>
</head>
<body>
<h3>日期解析:</h3>
<c:set var="now" value="20-10-2015" />
<fmt:parseDate value="${now}" var="parsedEmpDate" pattern="dd-MM-yyyy" />
<p>解析后的日期为: <c:out value="${parsedEmpDate}" /></p>
</body>
</html>
bundle
标签
功能:将指定的资源束对出现在<fmt:bundle>
标签中的<fmt:message>
标签可用。这可以使您省去为每个<fmt:message>
标签指定资源束的很多步骤。
语法:<fmt:bundle baseName="<string>" prefix="<string>"/>
下面的两个<fmt:bundle>
块将产生同样的输出:
<fmt:bundle basename="com.runoob.Example">
<fmt:message key="count.one"/>
</fmt:bundle>
<fmt:bundle basename="com.runoob.Example" prefix="count.">
<fmt:message key="title"/>
</fmt:bundle>
属性:
标签 | 描述 |
---|---|
basename | 指定被载入的资源束的基础名称 |
prefix | 指定<fmt:message> 标签key属性的前缀 |
定义一个默认的资源束:
package com.runoob;
import java.util.ListResourceBundle;
public class Example_En extends ListResourceBundle {
public Object[][] getContents() {
return contents;
}
static final Object[][] contents = {
{
"count.one", "One"},
{
"count.two", "Two"},
{
"count.three", "Three"},
};
}
编译以上文件为 Example.class,然后放在Web应用程序的CLASSPATH能找到的地方。现在可以使用JSTL来显示这三个数字了,就像这样:
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<%@ taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix="fmt" %>
<html>
<head>
<title>JSTL fmt:bundle 标签</title>
</head>
<body>
<fmt:bundle basename="com.runoob.Example" prefix="count.">
<fmt:message key="one"/><br/>
<fmt:message key="two"/><br/>
<fmt:message key="three"/><br/>
</fmt:bundle>
</body>
</html>
四、SQL标签
提供了与关系型数据库(Oracle,MySQL,SQL Server等等)进行交互的标签。引用SQL标签库的语法如下:
<%@ taglib prefix="sql" uri="http://java.sun.com/jsp/jstl/sql" %>
setDataSource
标签
功能:用来配置数据源或者将数据源信息存储在某作用域的变量中,用来作为其它JSTL数据库操作的数据源。
语法:
<sql:setDataSource var="<string>" scope="<string>" dataSource="<string>" driver="<string>" url="<string>" user="<string>" password="<string>"/>
属性:
标签 | 描述 |
---|---|
driver | 要注册的JDBC驱动 |
url | 数据库连接的JDBC URL |
user | 数据库用户名 |
password | 数据库密码 |
dataSource | 数据源 |
var | 代表数据库的变量 |
scope | var属性的作用域 |
栗子
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<%@ taglib uri="http://java.sun.com/jsp/jstl/sql" prefix="sql"%>
<html>
<head>
<title>JSTL sql:setDataSource Tag</title>
</head>
<body>
<sql:setDataSource var="snapshot" driver="com.mysql.jdbc.Driver" url="jdbc:mysql://localhost/TEST" user="user_id" password="mypassword"/>
<sql:query dataSource="${snapshot}" sql="..." var="result" />
</body>
</html>
query
标签
功能:用于运行SQL SELECT语句,还有就是将结果存储在作用域变量中。
语法:
<sql:query var="<string>" scope="<string>" sql="<string>" dataSource="<string>" startRow="<string>" maxRows="<string>"/>
属性:
标签 | 描述 |
---|---|
sql | 需要执行的SQL命令(返回一个ResultSet对象) |
dataSource | 所使用的数据库连接(覆盖默认值) |
maxRows | 存储在变量中的最大结果数 |
startRow | 开始记录的结果的行数 |
var | 代表数据库的变量 |
scope | var属性的作用域 |
栗子
create table Employees
(
id int not null,
age int not null,
first varchar (255),
last varchar (255)
);
INSERT INTO Employees VALUES (100, 18, 'Zara', 'Ali');
INSERT INTO Employees VALUES (102, 30, 'Zaid', 'Khan');
INSERT INTO Employees VALUES (103, 28, 'Sumit', 'Mittal');
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ page import="java.io.*,java.util.*,java.sql.*"%>
<%@ page import="javax.servlet.http.*,javax.servlet.*" %>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/sql" prefix="sql"%>
<html>
<head>
<title>JSTL sql:query Tag</title>
</head>
<body>
<sql:setDataSource var="snapshot" driver="com.mysql.jdbc.Driver" url="jdbc:mysql://localhost/TEST" user="root" password="pass123"/>
<sql:query dataSource="${snapshot}" var="result">
SELECT * from Employees;
</sql:query>
<table border="1" width="100%">
<tr>
<th>Emp ID</th>
<th>First Name</th>
<th>Last Name</th>
<th>Age</th>
</tr>
<c:forEach var="row" items="${result.rows}">
<tr>
<td><c:out value="${row.id}"/></td>
<td><c:out value="${row.first}"/></td>
<td><c:out value="${row.last}"/></td>
<td><c:out value="${row.age}"/></td>
</tr>
</c:forEach>
</table>
</body>
</html>
update
标签
功能:用来执行一个没有返回值的SQL语句,比如SQL INSERT,UPDATE,DELETE语句。
语法:<sql:update var="<string>" scope="<string>" sql="<string>" dataSource="<string>"/>
属性:
标签 | 描述 |
---|---|
sql | 需要执行的SQL命令(不返回ResultSet对象) |
dataSource | 所使用的数据库连接(覆盖默认值) |
var | 用来存储所影响行数的变量 |
scope | var属性的作用域 |
栗子
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ page import="java.io.*,java.util.*,java.sql.*"%>
<%@ page import="javax.servlet.http.*,javax.servlet.*" %>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/sql" prefix="sql"%>
<html>
<head>
<title>JSTL sql:update 标签</title>
</head>
<body>
<sql:setDataSource var="snapshot" driver="com.mysql.jdbc.Driver" url="jdbc:mysql://localhost/TEST" user="root" password="pass123"/>
<sql:update dataSource="${snapshot}" var="count">
INSERT INTO Employees VALUES (104, 2, 'Nuha', 'Ali');
</sql:update>
<sql:query dataSource="${snapshot}" var="result">
SELECT * from Employees;
</sql:query>
<table border="1" width="100%">
<tr>
<th>Emp ID</th>
<th>First Name</th>
<th>Last Name</th>
<th>Age</th>
</tr>
<c:forEach var="row" items="${result.rows}">
<tr>
<td><c:out value="${row.id}"/></td>
<td><c:out value="${row.first}"/></td>
<td><c:out value="${row.last}"/></td>
<td><c:out value="${row.age}"/></td>
</tr>
</c:forEach>
</table>
</body>
</html>
五、XML标签
提供了创建和操作XML文档的标签。引用XML标签库的语法如下:
<%@ taglib prefix="x" uri="http://java.sun.com/jsp/jstl/xml" %>
out
标签
功能:显示XPath表达式的结果,与<%= %>功能相似。
语法:<x:out select="<string>" escapeXml="<true|false>"/>
属性:
标签 | 描述 |
---|---|
select | 需要计算的XPath表达式,通常使用XPath 变量 |
escapeXml | 是否忽略XML 特殊字符 |
栗子 |
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ taglib prefix="x" uri="http://java.sun.com/jsp/jstl/xml" %>
<html>
<head>
<title>JSTL x:out 标签</title>
</head>
<body>
<h3>Books Info:</h3>
<c:set var="xmltext">
<books>
<book>
<name>Padam History</name>
<author>ZARA</author>
<price>100</price>
</book>
<book>
<name>Great Mistry</name>
<author>NUHA</author>
<price>2000</price>
</book>
</books>
</c:set>
<x:parse xml="${xmltext}" var="output"/>
<b>The title of the first book is</b>:
<x:out select="$output/books/book[1]/name" />
<br>
<b>The price of the second book</b>:
<x:out select="$output/books/book[2]/price" />
</body>
</html>
parse
标签
功能:用来解析属性中或标签主体中的XML数据。
语法:
<x:parse var="<string>" varDom="<string>" scope="<string>" scopeDom="<string>" doc="<string>" systemId="<string>" filter="<string>"/>
属性:
标签 | 描述 |
---|---|
var | 包含已解析XML数据的变量 |
xml | 需要解析的文档的文本内容(String或Reader) |
systemId | 系统标识符URI,用来解析文档 |
filter | 应用于源文档的过滤器 |
doc | 需要解析的XML文档 |
scope | var属性的作用域 |
varDom | 包含已解析XML数据的变量 |
scopeDom | varDom属性的作用域 |
栗子 | |
books.xml文件代码如下: |
<books>
<book>
<name>Padam History</name>
<author>ZARA</author>
<price>100</price>
</book>
<book>
<name>Great Mistry</name>
<author>NUHA</author>
<price>2000</price>
</book>
</books>
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ taglib prefix="x" uri="http://java.sun.com/jsp/jstl/xml" %>
<html>
<head>
<title>JSTL x:parse 标签</title>
</head>
<body>
<h3>Books Info:</h3>
<c:import var="bookInfo" url="http://localhost:8080/books.xml"/>
<x:parse xml="${bookInfo}" var="output"/>
<b>The title of the first book is</b>:
<x:out select="$output/books/book[1]/name" />
<br>
<b>The price of the second book</b>:
<x:out select="$output/books/book[2]/price" />
</body>
</html>
set
标签
功能:用于为XPath表达式的值设置一个变量。
语法:<x:set var="<string>" select="<string>" scope="<string>"/>
属性:
标签 | 描述 |
---|---|
var | 代表XPath表达式值得变量 |
select | 需要计算的XPath表达式 |
scope | var属性的作用域 |
栗子 |
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ taglib prefix="x" uri="http://java.sun.com/jsp/jstl/xml" %>
<html>
<head>
<title>JSTL x:set 标签</title>
</head>
<body>
<h3>Books Info:</h3>
<c:set var="xmltext">
<books>
<book>
<name>Padam History</name>
<author>ZARA</author>
<price>100</price>
</book>
<book>
<name>Great Mistry</name>
<author>NUHA</author>
<price>2000</price>
</book>
</books>
</c:set>
<x:parse xml="${xmltext}" var="output"/>
<x:set var="fragment" select="$output//book"/>
<b>The price of the second book</b>:
<c:out value="${fragment}" />
</body>
</html>
transform
标签
功能:用于在XML文档中应用XSL。
语法:
<x:transform var="<string>" scope="<string>" result="<string>" doc="<string>" docSystemId="<string>" xslt="<string>" xsltSystemId="<string>"/>
属性:
标签 | 描述 |
---|---|
doc | 源XML文档 |
docSystemId | 源XML文档的URI |
xslt | XSLT 样式表 |
xsltSystemId | 源XSLT文档的URI |
result | 接收转换结果的对象 |
var | 代表被转换的XML文档的变量 |
scope | var属性的作用域 |
栗子 | |
style.xsl 文件 |
<?xml version="1.0"?>
<xsl:stylesheet xmlns:xsl= "http://www.w3.org/1999/XSL/Transform" version="1.0">
<xsl:output method="html" indent="yes"/>
<xsl:template match="/">
<html>
<body>
<xsl:apply-templates/>
</body>
</html>
</xsl:template>
<xsl:template match="books">
<table border="1" width="100%">
<xsl:for-each select="book">
<tr>
<td>
<i><xsl:value-of select="name"/></i>
</td>
<td>
<xsl:value-of select="author"/>
</td>
<td>
<xsl:value-of select="price"/>
</td>
</tr>
</xsl:for-each>
</table>
</xsl:template>
main.jsp 文件
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ taglib prefix="x" uri="http://java.sun.com/jsp/jstl/xml" %>
<html>
<head>
<title>JSTL x:transform 标签</title>
</head>
<body>
<h3>Books Info:</h3>
<c:set var="xmltext">
<books>
<book>
<name>Padam History</name>
<author>ZARA</author>
<price>100</price>
</book>
<book>
<name>Great Mistry</name>
<author>NUHA</author>
<price>2000</price>
</book>
</books>
</c:set>
<c:import url="http://localhost:8080/style.xsl" var="xslt"/>
<x:transform xml="${xmltext}" xslt="${xslt}"/>
</body>
</html>
六、JSTL函数
一系列标准函数,大部分是通用的字符串处理函数。引用JSTL函数库的语法如下:
<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %>
contains()
函数
功能:用于确定一个字符串是否包含指定的子串。
语法:
<c:if test="${fn:contains(<原始字符串>, <要查找的子字符串>)}">
...
</c:if>
栗子
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn" %>
<html>
<head>
<title>使用 JSTL 函数</title>
</head>
<body>
<c:set var="theString" value="I am from runoob"/>
<c:if test="${fn:contains(theString, 'runoob')}">
<p>找到 runoob<p>
</c:if>
<c:if test="${fn:contains(theString, 'RUNOOB')}">
<p>找到 RUNOOB<p>
</c:if>
</body>
</html>
containsIgnoreCase()
函数
功能:用于确定一个字符串是否包含指定的子串,忽略大小写。
语法:
<c:if test="${fn:containsIgnoreCase(<原始字符串>, <要查找的子字符串>)}">
...
</c:if>
栗子
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn" %>
<html>
<head>
<title>使用 JSTL 函数</title>
</head>
<body>
<c:set var="theString" value="I am from runoob"/>
<c:if test="${fn:containsIgnoreCase(theString, 'runoob')}">
<p>找到 runoob<p>
</c:if>
<c:if test="${fn:containsIgnoreCase(theString, 'RUNOOB')}">
<p>找到 RUNOOB<p>
</c:if>
</body>
</html>
endsWith()
函数
功能:用于确定一个字符串是否以指定后缀结尾。
语法:
<c:if test="${fn:endsWith(<原始字符串>, <要查找的子字符串>)}">
...
</c:if>
栗子
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn" %>
<html>
<head>
<title>使用 JSTL 函数</title>
</head>
<body>
<c:set var="theString" value="I am from runoob 123"/>
<c:if test="${fn:endsWith(theString, '123')}">
<p>字符串以 123 结尾<p>
</c:if>
<c:if test="${fn:endsWith(theString, 'unoob')}">
<p>字符串以 runoob 结尾<p>
</c:if>
</body>
</html>
escapeXml()
函数
功能:忽略用于XML标记的字符。
语法:${fn:escapeXml(<要转义标记的文本>)}
栗子
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn" %>
<html>
<head>
<title>Using JSTL Functions</title>
</head>
<body>
<c:set var="string1" value="This is first String."/>
<c:set var="string2" value="This <abc>is second String.</abc>"/>
<p>使用 escapeXml() 函数:</p>
<p>string (1) : ${fn:escapeXml(string1)}</p>
<p>string (2) : ${fn:escapeXml(string2)}</p>
<p>不使用 escapeXml() 函数:</p>
<p>string (1) : ${string1}</p>
<p>string (2) : ${string2}</p>
</body>
</html>
indexOf()
函数
功能:返回一个字符串中指定子串的位置。
语法:${fn:indexOf(<原始字符串>,<子字符串>)}
栗子
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn" %>
<html>
<head>
<title>Using JSTL Functions</title>
</head>
<body>
<c:set var="string1" value="This is first String."/>
<c:set var="string2" value="This <abc>is second String.</abc>"/>
<p>Index (1) : ${fn:indexOf(string1, "first")}</p>
<p>Index (2) : ${fn:indexOf(string2, "second")}</p>
</body>
</html>
join()
函数
功能:将一个数组中的所有元素使用指定的分隔符来连接成一个字符串。
语法:${fn:join([数组], <分隔符>)}
栗子
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn" %>
<html>
<head>
<title>使用 JSTL 函数</title>
</head>
<body>
<c:set var="string1" value="www runoob com"/>
<c:set var="string2" value="${fn:split(string1, ' ')}" />
<c:set var="string3" value="${fn:join(string2, '-')}" />
<p>字符串为 : ${string3}</p>
</body>
</html>
length()
函数
功能:返回字符串长度或集合中元素的数量。
语法:${fn:length(collection | string)}
栗子
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn" %>
<html>
<head>
<title>使用 JSTL 函数</title>
</head>
<body>
<c:set var="string1" value="This is first String."/>
<c:set var="string2" value="This is second String." />
<p>字符串长度 (1) : ${fn:length(string1)}</p>
<p>字符串长度 (2) : ${fn:length(string2)}</p>
</body>
</html>
replace()
函数
功能:将字符串中所有指定的子串用另外的字符串替换。
语法:${fn:replace(<原始字符串>, <被替换的字符串>, <要替换的字符串>)}
栗子
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn" %>
<html>
<head>
<title>使用 JSTL 函数</title>
</head>
<body>
<c:set var="string1" value="I am from google"/>
<c:set var="string2" value="${fn:replace(string1, 'google', 'runoob')}" />
<p>替换后的字符串 : ${string2}</p>
</body>
</html>
split()
函数
功能:将一个字符串用指定的分隔符分裂为一个子串数组。
语法:${fn:split(<待分隔的字符串>, <分隔符>)}
栗子
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn" %>
<html>
<head>
<title>使用 JSTL 函数</title>
</head>
<body>
<c:set var="string1" value="www runoob com"/>
<c:set var="string2" value="${fn:split(string1, ' ')}" />
<c:set var="string3" value="${fn:join(string2, '-')}" />
<p>string3 字符串 : ${string3}</p>
<c:set var="string4" value="${fn:split(string3, '-')}" />
<c:set var="string5" value="${fn:join(string4, ' ')}" />
<p>string5 字符串: ${string5}</p>
</body>
</html>
startsWith()
函数
功能:用于确定一个字符串是否以指定的前缀开始。
语法:
<c:if test="${fn:startsWith(<原始字符串>, <搜索的前缀>)}">
...
</c:if>
栗子
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn" %>
<html>
<head>
<title>使用 JSTL 函数</title>
</head>
<body>
<c:set var="string" value="Runoob: I am from Runoob."/>
<c:if test="${fn:startsWith(string, 'Google')}">
<p>字符串以 Google 开头</p>
</c:if>
<br />
<c:if test="${fn:startsWith(string, 'Runoob')}">
<p>字符串以 Runoob 开头</p>
</c:if>
</body>
</html>
substring()
函数
功能:返回字符串中指定开始和结束索引的子串。
语法:${fn:substring(<string>, <beginIndex>, <endIndex>)}
栗子
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn" %>
<html>
<head>
<title>使用 JSTL 函数</title>
</head>
<body>
<c:set var="string1" value="This is first String."/>
<c:set var="string2" value="${fn:substring(string1, 5, 15)}" />
<p>生成的子字符串为 : ${string2}</p>
</body>
</html>
substringAfter()
函数
功能:返回字符串中指定子串后面的部分。
语法:${fn:substringAfter(<string>, <substring>)}
栗子
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn" %>
<html>
<head>
<title>使用 JSTL 函数</title>
</head>
<body>
<c:set var="string1" value="This is first String."/>
<c:set var="string2" value="${fn:substringAfter(string1, 'is')}" />
<p>生成的子字符串 : ${string2}</p>
</body>
</html>
substringBefore()
函数
功能:返回一个字符串中指定子串前面的部分。
语法:${fn:substringBefore(<string>, <substring>)}
栗子
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn" %>
<html>
<head>
<title>使用 JSTL 函数</title>
</head>
<body>
<c:set var="string1" value="This is first String."/>
<c:set var="string2" value="${fn:substringBefore(string1, 'first')}" />
<p>生成的子字符串 : ${string2}</p>
</body>
</html>
toLowerCase()
函数
功能:将字符串中的所有字符转为小写。
语法:${fn.toLowerCase(<string>)}
栗子
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn" %>
<html>
<head>
<title>使用 JSTL 函数</title>
</head>
<body>
<c:set var="string1" value="I am from RUNOOB"/>
<c:set var="string2" value="${fn:toLowerCase(string1)}" />
<p>字符串为 : ${string2}</p>
</body>
</html>
toUpperCase()
函数
功能:将一个字符串中的所有字符转为大写。
语法:${fn:toUpperCase(<string>)}
栗子
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn" %>
<html>
<head>
<title>使用 JSTL 函数</title>
</head>
<body>
<c:set var="string1" value="I am from runoob"/>
<c:set var="string2" value="${fn:toUpperCase(string1)}" />
<p>字符串为 : ${string2}</p>
</body>
</html>
trim()
函数
功能:将字符串两端的空白符移除。
语法:${fn:trim(<string>)}
栗子
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn" %>
<html>
<head>
<title>使用 JSTL 函数</title>
</head>
<body>
<c:set var="string1" value="I am from runoob "/>
<p>string1 长度 : ${fn:length(string1)}</p>
<c:set var="string2" value="${fn:trim(string1)}" />
<p>string2 长度 : ${fn:length(string2)}</p>
<p>字符串为 : ${string2}</p>
</body>
</html>
今天的文章jstl标签库有哪些_js中label标签「建议收藏」分享到此就结束了,感谢您的阅读。
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/82292.html