JSP 标准标签库(JSTL)(菜鸟教程)
JSTL 1.1 与 JSTL 1.2 之间的区别?如何下载 JSTL 1.2?
JSTL 1.2 中不要求 standard.jar 包。
您可以在 Maven 中央仓库中找到它们。
http://repo2.maven.org/maven2/javax/servlet/jstl/
http://repo2.maven.org/maven2/taglibs/standard/
由于JSTL 1.1
已经过时,Apache已将其置于存档中。选择jakarta-taglibs-standard-current.zip
文件。
但是,如果您正在运行Servlet 2.5
兼容容器并且web.xml
声明为至少Servlet 2.5
,
那么您应该能够使用新的JSTL 1.2。
需要注意的是JSTL 1.2
并没有要求standard.jar
。
根据JSTL标签所提供的功能,可以将其分为5个类别。
- 核心标签
- 格式化标签
- SQL 标签
- XML 标签
- JSTL 函数
JSTL 库安装
从Apache的标准标签库中下载的二进包(jakarta-taglibs-standard-current.zip)。
下载 jakarta-taglibs-standard-1.1.2.zip 包并解压,将 jakarta-taglibs-standard-1.1.2/lib/ 下的两个 jar 文件:standard.jar 和 jstl.jar
文件拷贝到 /WEB-INF/lib/ 下。
将 tld 下的需要引入的 tld 文件复制到 WEB-INF 目录下。
接下来我们在 web.xml 文件中添加以下配置:
- <?xml version="1.0" encoding="UTF-8"?>
- <web-app version="2.4"
- xmlns="http://java.sun.com/xml/ns/j2ee"
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee
- http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
- <jsp-config>
- <taglib>
- <taglib-uri>http://java.sun.com/jsp/jstl/fmt</taglib-uri>
- <taglib-location>/WEB-INF/fmt.tld</taglib-location>
- </taglib>
- <taglib>
- <taglib-uri>http://java.sun.com/jsp/jstl/fmt-rt</taglib-uri>
- <taglib-location>/WEB-INF/fmt-rt.tld</taglib-location>
- </taglib>
- <taglib>
- <taglib-uri>http://java.sun.com/jsp/jstl/core</taglib-uri>
- <taglib-location>/WEB-INF/c.tld</taglib-location>
- </taglib>
- <taglib>
- <taglib-uri>http://java.sun.com/jsp/jstl/core-rt</taglib-uri>
- <taglib-location>/WEB-INF/c-rt.tld</taglib-location>
- </taglib>
- <taglib>
- <taglib-uri>http://java.sun.com/jsp/jstl/sql</taglib-uri>
- <taglib-location>/WEB-INF/sql.tld</taglib-location>
- </taglib>
- <taglib>
- <taglib-uri>http://java.sun.com/jsp/jstl/sql-rt</taglib-uri>
- <taglib-location>/WEB-INF/sql-rt.tld</taglib-location>
- </taglib>
- <taglib>
- <taglib-uri>http://java.sun.com/jsp/jstl/x</taglib-uri>
- <taglib-location>/WEB-INF/x.tld</taglib-location>
- </taglib>
- <taglib>
- <taglib-uri>http://java.sun.com/jsp/jstl/x-rt</taglib-uri>
- <taglib-location>/WEB-INF/x-rt.tld</taglib-location>
- </taglib>
- </jsp-config>
- </web-app>
使用任何库,你必须在每个 JSP 文件中的头部包含 <taglib> 标签。
核心标签
核心标签是最常用的 JSTL标签。引用核心标签库的语法如下:
- <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<c:out> 标签c:out
<c:out>标签用来显示一个表达式的结果,与<%= %>作用相似,
它们的区别就是<c:out>标签可以直接通过"."操作符来访问属性。
如果想要访问customer.address.street,只需要这样写:<c:out value="customer.address.street">。
语法格式
- <c:out value="<string>" default="<string>" escapeXml="<true|false>"/>
<c:set> 标签 c:set
<c:set>标签用于设置变量值和对象属性。
<c:set>标签就是<jsp:setProperty>行为标签的孪生兄弟。
这个标签之所以很有用呢,是因为它会计算表达式的值,然后使用计算结果来设置 JavaBean 对象或 java.util.Map 对象的值。
- <c:set var="salary" scope="session" value="${2000*2}"/>
- <c:out value="${salary}"/>
<c:remove> 标签 c:remove
<c:remove>标签用于移除一个变量,可以指定这个变量的作用域,若未指定,则默认为变量第一次出现的作用域。
这个标签不是特别有用,不过可以用来确保JSP完成清理工作。
- <c:remove var="<string>" scope="<string>"/>
- <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>
<c:catch> 标签 c:catch
<c:catch> 标签主要用来处理产生错误的异常状况,并且将错误信息储存起来。
- <c:catch var ="catchException">
- <% int x = 5/0;%>
- </c:catch>
- <c:if test = "${catchException != null}">
- <p>异常为 : ${catchException} <br />
- 发生了异常: ${catchException.message}</p>
- </c:if>
<c:if> 标签 c:if
<c:if>标签判断表达式的值,如果表达式的值为 true 则执行其主体内容。
- <c:set var="salary" scope="session" value="${2000*2}"/>
- <c:if test="${salary > 2000}">
- <p>我的工资为: <c:out value="${salary}"/><p>
- </c:if>
<c:choose>, <c:when>, <c:otherwise> 标签 c:choose c:when c:otherwise
<c:choose>标签与Java switch语句的功能一样,用于在众多选项中做出选择。
switch语句中有case,而<c:choose>标签中对应有<c:when>,
switch语句中有default,而<c:choose>标签中有<c:otherwise>。
- <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>
<c:import> 标签 c:import
<c:import>标签提供了所有<jsp:include>行为标签所具有的功能,同时也允许包含绝对URL。
举例来说,使用<c:import>标签可以包含一个FTP服务器中不同的网页内容。
- <c:import var="data" url="http://www.runoob.com"/>
- <c:out value="${data}"/>
以上程序将会打印http://www.runoob.com"页面的源代码
<c:forEach>, <c:forTokens> 标签 c:forEach c:forTokens
这些标签封装了Java中的for,while,do-while循环。
相比而言,<c:forEach>标签是更加通用的标签,因为它迭代一个集合中的对象。
<c:forTokens>标签通过指定分隔符将字符串分隔为一个数组然后迭代它们。
<c:forEach>标签有如下属性:
属性 | 描述 | 是否必要 | 默认值 |
---|---|---|---|
items | 要被循环的信息 | 否 | 无 |
begin | 开始的元素(0=第一个元素,1=第二个元素) | 否 | 0 |
end | 最后一个元素(0=第一个元素,1=第二个元素) | 否 | Last element |
step | 每一次迭代的步长 | 否 | 1 |
var | 代表当前条目的变量名称 | 否 | 无 |
varStatus | 代表循环状态的变量名称 | 否 | 无 |
<c:forTokens>标签与<c:forEach>标签有相似的属性,
不过<c:forTokens>还有另一个属性:
delims | 分隔符 | 是 | 无 |
- <c:forEach var="i" begin="1" end="5">
- Item <c:out value="${i}"/><p>
- </c:forEach>
<c:forTokens>演示实例
- <c:forTokens items="google,runoob,taobao" delims="," var="name">
- <c:out value="${name}"/><p>
- </c:forTokens>
<c:param> 标签 c:param
<c:param>标签用于在<c:url>标签中指定参数,而且与URL编码相关。
在<c:param>标签内,name属性表明参数的名称,value属性表明参数的值。
- <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>
<c:redirect> 标签 c:redirect
<c:redirect>标签通过自动重写URL来将浏览器重定向至一个新的URL,它提供内容相关的URL,并且支持c:param标签。
- <c:redirect url="http://www.runoob.com"/>
<c:url> 标签 c:url
<c:url>标签将URL格式化为一个字符串,然后存储在一个变量中。
这个标签在需要的时候会自动重写URL。
var属性用于存储格式化后的URL。
<c:url>标签只是用于调用response.encodeURL()方法的一种可选的方法。它真正的优势在于提供了合适的URL编码,包括<c:param>中指定的参数。
- <h1><c:url>实例 Demo</h1>
- <a href="<c:url value="http://www.runoob.com"/>">
- 这个链接通过 <c:url> 标签生成。
- </a>
JSP 标准标签库(JSTL)(菜鸟教程)的更多相关文章
- JSP 标准标签库(JSTL)
JSP 标准标签库(JSTL) JSP标准标签库(JSTL)是一个JSP标签集合,它封装了JSP应用的通用核心功能. JSTL支持通用的.结构化的任务,比如迭代,条件判断,XML文档操作,国际化标签, ...
- JSP标准标签库(JSTL)--JSTL简介与安装
对于MVC设计模式来讲,我们一直强调,在一个JSP钟scriptlet代码越少越好,但是只靠以前的概念很难实现,因为标签的开发特别麻烦,所以为了简化标签,也为了让标签更具备一些通用性,所以一般在开发中 ...
- JSP 标准标签库JSTL
JSP标准标签库(JSTL)是一个JSP标签集合,它封装了JSP应用的通用核心功能. JSTL支持通用的.结构化的任务,比如迭代,条件判断,XML文档操作,国际化标签,SQL标签. 除了这些,它还提供 ...
- JSP标准标签库JSTL
1.什么是JSTL? JSP标准标签库(JSP Standard Tag Library) 2.JSTL标准标签库中的常用标签 JSTL是JSP页面的标签库,实质上是一段Java代码.我们常用的是它的 ...
- jsp标准标签库——jstl
JSP标准标签库(JSTL)是一个JSP标签集合,它封装了JSP应用的通用核心功能. JSTL支持通用的.结构化的任务,比如迭代,条件判断,XML文档操作,国际化标签,SQL标签. 除了这些,它还提供 ...
- JSP标准标签库(JSTL)--XML标签库 x
³在开发中XML解析的操作是非常烦琐的,幸运的是在JSTL中专门提供了用于XML解析的操作,这样用户就可以不用费力的去研究SAX或DOM等操作的使用,就可以轻松的进行XML文件的解析处理. XML标 ...
- JSP标准标签库(JSTL)--SQL标签库 sql
了解即可.SQL标签库 No. 功能分类 标签名称 描述 1 数据源标签 <sql:setDataSource> 设置要使用的数据源名称 2 数据库操作标签 <sql:query&g ...
- JSP标准标签库(JSTL)--核心标签库 c
核心标签库是JSTL中最重要的部分,可以完成输出,判断,迭代等操作 功能分类: 1. 基本标签: <c:out>:输出属性内容 <c:set>:设置属性内容 <c:rem ...
- JSP标准标签库(JSTL)--国际化标签库 fmt
JSTL中使用fmt.tld作为格式化标签库的定义文件 No. 功能分类 标签名称 描述 1 国际化标签 <fmt:setLocale> 设置一个全局的地区代码 2 <fmt:req ...
- JSP标准标签库(JSTL)--函数标签库 fn
和String的方法类似,就是对String的一种封装. No. 函数标签名称 描述 1 ${fn:contains()} 查询某字符串是否存在,区分大小写 2 ${fn:containsIgnore ...
随机推荐
- 我的Android进阶之旅------>Android图片处理(Matrix,ColorMatrix)
本文转载于:http://www.cnblogs.com/leon19870907/articles/1978065.html 在编程中有时候需要对图片做特殊的处理,比如将图片做出黑白的,或者老照片的 ...
- 流畅python学习笔记:第二十章:属性描述符:
在前面一章中介绍了@property的用法,但是存在一个问题,如果我有多个属性想转变成property特性,那不是针对每个都需要实现一个 @propery.setter 和 @property.get ...
- 简单Android代码混淆(转)
代码混淆步骤: 1,project.properties中打开代码混淆功能,加入proguard.config=proguard.cfg 2,编辑proguard.cfg文件,项目没有自动生成时可手工 ...
- 各种 Spring-Boot-Starters系列 介绍
分类: JavaWeb后端(6) 目录(?)[+] 原文传送门:Spring Boot application starters ↑传送门里有各Spring-Boot-Starters ...
- P3746 [六省联考2017]组合数问题
P3746 [六省联考2017]组合数问题 \(dp_{i,j}\)表示前\(i\)个物品,取的物品模\(k\)等于\(r\),则\(dp_{i,j}=dp_{i-1,(j-1+k)\%k}+dp_{ ...
- SqlServer 按逗号分隔
SELECT ORDER_ID,LTRIM(MAX(SYS_CONNECT_BY_PATH(GOODS_NAME, ',')), ',') GOODS_NAME FROM (SELECT GOODS_ ...
- 如何在Mac的Finder中显示/usr、/tmp、/var等隐藏目录
原文链接: http://blog.csdn.net/yhawaii/article/details/7435918 Finder中默认是不显示/usr./tmp./var等隐藏目录的,通过在终端中输 ...
- Java集合的有序无序问题和线程安全与否问题
首先,清楚有序和无序是什么意思: 集合的有序.无序是指插入元素时,保持插入的顺序性,也就是先插入的元素优先放入集合的前面部分. 而排序是指插入元素后,集合中的元素是否自动排序.(例如升序排序) 1.有 ...
- listen 55
There are also green card qualifiers for some non-citizens who invest in America, and for refugees.难 ...
- leetcode 67. Add Binary (高精度加法)
Given two binary strings, return their sum (also a binary string). For example,a = "11"b = ...