JSP 标准标签库(JSTL)——核心标签
目录
<c:out>标签
<c:set>标签
<c:remove>标签
<c:catch>标签
<c:if>标签
<c:chose>,<c:when> ,<c:otherwise> 标签
<c:import>标签
<c:forEach>,<forTokens> 标签
<c:param>标签
<c:redirect>标签
<c:url>标签
<c:out> 标签
<c:out>标签用来显示一个表达式的结果,与<%= %>作用相似,它们的区别就是<c:out>标签可以直接通过"."操作符来访问属性。
举例来说,如果想要访问customer.address.street,只需要这样写:<c:out value="customer.address.street">。
<c:out>标签会自动忽略XML标记字符,所以它们不会被当做标签来处理。
语法格式
[code]<c:out value="<string>" default="<string>" escapeXml="<true|false>"/>
属性
<c:out>标签有如下属性:
属性 | 描述 | 是否必要 | 默认值 |
---|---|---|---|
value | 要输出的内容 | 是 | 无 |
default | 输出的默认值 | 否 | 主体中的内容 |
escapeXml | 是否忽略XML特殊字符 | 否 | true |
程序示例
[code]<%@ 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:out 标签实例</title> </head> <body> <html> <head> <title><c:out>实例</title> </head> <body> <h1><c:out> 实例</h1> <c:out value="<要显示的数据对象(未使用转义字符)>" escapeXml="true" default="默认值"></c:out><br/> <c:out value="<要显示的数据对象(使用转义字符)>" escapeXml="false" default="默认值"></c:out><br/> <c:out value="${null}" escapeXml="false">使用的表达式结果为null,则输出该默认值</c:out><br/> </body> </body> </html>
<c:out> 实例
[code]<要显示的数据对象(未使用转义字符)> <要显示的数据对象(使用转义字符)> 使用的表达式结果为null,则输出该默认值
<c:set> 标签
<c:set>标签用于设置变量值和对象属性。
<c:set>标签就是<jsp:setProperty>行为标签的孪生兄弟。
这个标签之所以很有用呢,是因为它会计算表达式的值,然后使用计算结果来设置 JavaBean 对象或 java.util.Map 对象的值。
语法格式
[code]<c:set var="<string>" value="<string>" target="<string>" property="<string>" scope="<string>"/>
属性
<c:set>标签有如下属性:
属性 | 描述 | 是否必要 | 默认值 |
---|---|---|---|
value | 要存储的值 | 否 | 主体的内容 |
target | 要修改的属性所属的对象 | 否 | 无 |
property | 要修改的属性 | 否 | 无 |
var | 存储信息的变量 | 否 | 无 |
scope | var属性的作用域 | 否 | Page |
如果指定了target属性,那么property属性也需要被指定。
实例演示
[code]<%@ 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>
运行结果如下:
[code]4000
附:
- scope 的作用域大小依次为:
[code]application > session > request > page(默认)
- jsp 处理变量的作用域先后依次为:
[code]page(默认) -> request -> session -> application
<c:remove> 标签
<c:remove>标签用于移除一个变量,可以指定这个变量的作用域,若未指定,则默认为变量第一次出现的作用域。
这个标签不是特别有用,不过可以用来确保JSP完成清理工作。
语法格式
[code]<c:remove var="<string>" scope="<string>"/>
属性
<c:remove>标签有如下属性:
属性 | 描述 | 是否必要 | 默认值 |
---|---|---|---|
var | 要移除的变量名称 | 是 | 无 |
scope | 变量所属的作用域 | 否 | 所有作用域 |
实例演示
[code]<%@ 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>
运行结果如下:
[code]salary 变量值: 4000 删除 salary 变量后的值:
<c:catch> 标签
<c:catch> 标签主要用来处理产生错误的异常状况,并且将错误信息储存起来。
语法格式
[code]<c:catch var="<string>"> ... </c:catch>
属性
<c:catch>标签有如下属性:
属性 | 描述 | 是否必要 | 默认值 |
---|---|---|---|
var | 用来储存错误信息的变量 | 否 | None |
实例演示
[code]<%@ 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>
以上实例运行结果:
[code]异常为 : java.lang.ArithmeticException: / by zero 发生了异常: / by zero
<c:if> 标签
<c:if>标签判断表达式的值,如果表达式的值为 true 则执行其主体内容。
语法格式
[code]<c:if test="<boolean>" var="<string>" scope="<string>"> ... </c:if>
属性
<c:if>标签有如下属性:
属性 | 描述 | 是否必要 | 默认值 |
---|---|---|---|
test | 条件 | 是 | 无 |
var | 用于存储条件结果的变量 | 否 | 无 |
scope | var属性的作用域 | 否 | page |
演示实例
[code]<%@ 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>
运行结果如下:
[code]我的工资为: 4000
<c:choose>, <c:when>, <c:otherwise> 标签
<c:choose>标签与Java switch语句的功能一样,用于在众多选项中做出选择。
switch语句中有case,而<c:choose>标签中对应有<c:when>,switch语句中有default,而<c:choose>标签中有<c:otherwise>。
语法格式
[code]<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>标签没有属性。
<c:when>标签的属性如下:
属性 | 描述 | 是否必要 | 默认值 |
---|---|---|---|
test | 条件 | 是 | 无 |
实例演示
[code]<%@ 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>
运行结果如下:
[code]你的工资为 : 4000 不错的薪水,还能生活。
<c:import> 标签
<c:import>标签提供了所有<jsp:include>行为标签所具有的功能,同时也允许包含绝对URL。
举例来说,使用<c:import>标签可以包含一个FTP服务器中不同的网页内容。
语法格式
[code]<c:import url="<string>" var="<string>" scope="<string>" varReader="<string>" context="<string>" charEncoding="<string>"/>
属性
<c:import>标签有如下属性:
属性 | 描述 | 是否必要 | 默认值 |
---|---|---|---|
url | 待导入资源的URL,可以是相对路径和绝对路径,并且可以导入其他主机资源 | 是 | 无 |
context | 当使用相对路径访问外部context资源时,context指定了这个资源的名字。 | 否 | 当前应用程序 |
charEncoding | 所引入的数据的字符编码集 | 否 | ISO-8859-1 |
var | 用于存储所引入的文本的变量 | 否 | 无 |
scope | var属性的作用域 | 否 | page |
varReader | 可选的用于提供java.io.Reader对象的变量 | 否 | 无 |
实例演示
[code]<%@ 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>
<c:forEach>, <c:forTokens> 标签
这些标签封装了Java中的for,while,do-while循环。
相比而言,<c:forEach>标签是更加通用的标签,因为它迭代一个集合中的对象。
<c:forTokens>标签通过指定分隔符将字符串分隔为一个数组然后迭代它们。
forEach 语法格式
[code]<c:forEach items="<object>" begin="<int>" end="<int>" step="<int>" var="<string>" varStatus="<string>"> ...
forTokens 语法格式
[code]<c:forTokens items="<string>" delims="<string>" begin="<int>" end="<int>" step="<int>" var="<string>" varStatus="<string>">
属性
<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>实例演示
[code]<%@ 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>
运行结果如下:
[code]Item 1 Item 2 Item 3 Item 4 Item 5
<c:forTokens>演示实例
[code]<%@ 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>
运行结果如下:
[code]google runoob taobao
<c:param> 标签
<c:param>标签用于在<c:url>标签中指定参数,而且与URL编码相关。
在<c:param>标签内,name属性表明参数的名称,value属性表明参数的值。
语法格式
[code]<c:param name="<string>" value="<string>"/>
属性
<c:param>标签有如下属性:
属性 | 描述 | 是否必要 | 默认值 |
---|---|---|---|
name | URL中要设置的参数的名称 | 是 | 无 |
value | 参数的值 | 否 | Body |
程序示例
如果想要向<c:import>标签中传递参数,需要先使用<c:url>标签来创建URL:
[code]<%@ 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>
通过浏览器访问以上页面,然后查看源代码,显示如下所示:
<c:redirect> 标签
<c:redirect>标签通过自动重写URL来将浏览器重定向至一个新的URL,它提供内容相关的URL,并且支持c:param标签。
语法格式
[code]<c:redirect url="<string>" context="<string>"/>
属性
c:redirect标签有如下属性:
属性 | 描述 | 是否必要 | 默认值 |
---|---|---|---|
url | 目标URL | 是 | 无 |
context | 紧接着一个本地网络应用程序的名称 | 否 | 当前应用程序 |
实例演示
如果你需要向 <c:import> 标签传递参数, 请先用 <c:url> 标签来创建URL地址,如下所示:
[code]<%@ 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>
<c:url> 标签
<c:url>标签将URL格式化为一个字符串,然后存储在一个变量中。
这个标签在需要的时候会自动重写URL。
var属性用于存储格式化后的URL。
<c:url>标签只是用于调用response.encodeURL()方法的一种可选的方法。它真正的优势在于提供了合适的URL编码,包括<c:param>中指定的参数。
语法格式
[code]<c:url var="<string>" scope="<string>" value="<string>" context="<string>"/>
属性
<c:url>标签有如下属性:
属性 | 描述 | 是否必要 | 默认值 |
---|---|---|---|
value | 基础URL | 是 | 无 |
context | 本地网络应用程序的名称 | 否 | 当前应用程序 |
var | 代表URL的变量名 | 否 | Print to page |
scope | var属性的作用域 | 否 | Page |
实例演示
[code]<%@ 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>
通过浏览器访问以上页面,然后查看源代码,显示如下所示:
阅读更多
- JSP 标准标签库(JSTL)
- JavaWeb开发第8章标准标签库(JSTL)之一二核心标签库
- JSP 标准标签库(JSTL)
- JSP基础语法之十六:JSTL配置和核心标签(C)的使用
- jsp脚本、jsp标准动作、EL表达式、JSTL标签
- JSP 标准标签库(JSTL)
- EL表达式----JSP11个隐式对象----EL函数----JSTL核心标签if,foreach
- JSP 标准标签库JSTL与EL表达式
- 【JSP】JSTL核心标签库的使用方法和示例
- JSP -- JSTL核心标签 (1)
- JSP 标准标签库(JSTL) 疑难杂症
- JSP 标准标签库(JSTL)一个报错
- JSP 标准标签库(JSTL)
- JSP 标准标签库(JSTL)之最常用的JSTL标签总结
- JSP 标准标签库(JSTL)
- JSTL标准标签库之核心标签(一)
- eclipse下taglib标准标签库问题Can not find the tag library descriptor for "http://java.sun.com/jsp/jstl/core"
- 【JSP】JSTL核心标签库的使用方法和示例
- JSP 标准标签库(JSTL)
- jsp,el表达式,jstl标准标签库