JSTL-核心标签库
主页:http://www.cnblogs.com/EasonJim/p/6958992.html的分支页。
一、<c:out>
<c:out>
标签显示表达式的结果,与<%= %>
的工作方式类似,但有一点不同是<c:out>
标签使用更简单的"." 符号来访问属性。例如,访问customer.address.street只需要使用<c:out value="customer.address.street"/>
就可以了。
<c:out>
标签可以自动转义XML标记,所以它们并不像实际标签一样被评估。
属性:
<c:out>
标签有如下所示属性:
属性 | 描述 | 是否必需 | 默认值 |
---|---|---|---|
value | 输出的信息 | 是 | 无 |
default | 输出的反馈信息 | 否 | body |
escapeXml | 如果该标签被转义为特殊的XML字符,则为真 | 否 | 真 |
实例:
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %> <html> <head> <title>Tag Example</title> </head> <body> <c:out value="${'<tag> , &'}"/> </body> </html>
这将产生如下所示结果:
二、<c:set>
<c:set>
标签是setProperty操作的JSTL友好版本。该标签非常有用,因为它计算表达式并使用计算结果来设置JavaBean或java.util.Map对象的值。
属性:
<c:set>
标签具有如下所示属性:
属性 | 描述 | 是否必需 | 默认值 |
---|---|---|---|
value | 保存的信息 | 否 | 主体 |
target | 属性被修改的变量名称 | 否 | 无 |
property | 修改的属性 | 否 | 无 |
var | 存储信息的变量名称 | 否 | 无 |
scope | 存储信息的变量范围 | 否 | 页面 |
如果指定了目标,那么属性也一定被指定。
实例:
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %> <html> <head> <title>Tag Example</title> </head> <body> <c:set var="salary" scope="session" value="${2000*2}"/> <c:out value="${salary}"/> </body> </html>
这将会产生如下所示结果:
三、<c:remove>
<c:remove>
标签从指定的范围或变量被发现的首个范围中(如果没有指定范围)删除变量。该操作通常并不是特别有用,但是它可以帮助确保JSP清理任何JSP负责的限定作用域资源。
属性:
<c:remove>
标签具有如下所示属性:
属性 | 描述 | 是否必需 | 默认值 |
---|---|---|---|
var | 要删除的变量名称 | 是 | 无 |
scope | 要删除的变量范围 | 否 | 全部范围 |
实例:
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %> <html> <head> <title>Tag Example</title> </head> <body> <c:set var="salary" scope="session" value="${2000*2}"/> <p>Before Remove Value: <c:out value="${salary}"/></p> <c:remove var="salary"/> <p>After Remove Value: <c:out value="${salary}"/></p> </body> </html>
这将会产生如下所示结果:
四、<c:catch>
<c:catch>
标签捕获发生在标签主题中的任何异常并有选择地公开它。它仅仅是用于错误处理和更得体地处理这个问题。
属性:
<c:catch>
标签具有如下所示属性:
属性 | 描述 | 是否必需 | 默认值 |
---|---|---|---|
var | 保存java.lang的变量名。如果抛出的Throwable在body元素内。 | 否 | 无 |
实例:
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %> <html> <head> <title>Tag Example</title> </head> <body> <c:catch var="catchException"> <% int x = 5/0;%> </c:catch> <c:if test="${catchException != null}"> <p>The exception is : ${catchException} <br /> There is an exception: ${catchException.message}</p> </c:if> </body> </html>
这将会产生如下所示结果:
五、<c:if>
<c:if>
标签计算表达式,当且仅当表达式的值为真时,显示其主体内容。
属性:
<c:if>
标签具有如下所示属性:
属性 | 描述 | 是否必需 | 默认值 |
---|---|---|---|
test | 计算的条件 | 是 | 无 |
var | 存储条件结果的变量名 | 否 | 无 |
scope | 存储条件结果的变量范围 | 否 | 页面 |
实例:
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %> <html> <head> <title>Tag Example</title> </head> <body> <c:set var="salary" scope="session" value="${2000*2}"/> <c:if test="${salary > 2000}"> <p>My salary is: <c:out value="${salary}"/><p> </c:if> </body> </html>
这将会产生如下所示结果:
六、<c:choose>,<c:when>,<c:otherwise>
<c:choose>
就像Java switch语句,它可以进行一些选择。正如switch语句有case语句,<c:choose>
标签有<c:when>
标签。一个switch语句中有default子句来指定一个默认的操作,同样的方式<c:choose>有<c:otherwise>
作为默认子句。
属性:
-
<c:choose>
标签没有任何属性。 -
<c:when>
标签有一个属性,在下面列出了。 <c:otherwise>
标签没有任何属性。
<c:when>
标签具有以下属性:
属性 | 描述 | 是否必需 | 默认值 |
---|---|---|---|
test | 计算的条件 | 是 | 无 |
实例:
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %> <html> <head> <title>Tag Example</title> </head> <body> <c:set var="salary" scope="session" value="${2000*2}"/> <p>Your salary is : <c:out value="${salary}"/></p> <c:choose> <c:when test="${salary <= 0}"> Salary is very low to survive. </c:when> <c:when test="${salary > 1000}"> Salary is very good. </c:when> <c:otherwise> No comment sir... </c:otherwise> </c:choose> </body> </html>
这将产生如下所示结果:
七、<c:import>
<c:import>
标签提供了<include>
操作的所有的功能,同时也可以包含绝对URL。
例如,使用import标签允许包含来自不同的Web站点或FTP服务器的内容。
属性:
<c:import>
标签具有以下属性:
属性 | 描述 | 是否必需 | 默认值 |
---|---|---|---|
url | 检索和导入到页面的URL | 是 | 无 |
context | /紧随其后的是本地的一个Web应用程序的名称 | 否 | 当前应用程序 |
charEncoding | 为导入数据使用的字符集 | 否 | ISO-8859-1 |
var | 存储导入文本的变量名 | 否 | 页面输出 |
scope | 存储导入文本的变量范围 | 否 | 页面 |
varReader | 显示java.io.Reader的另一个变量的名称 | 否 | 无 |
实例:
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %> <html> <head> <title>Tag Example</title> </head> <body> <c:import var="data" url="http://www.baidu.com"/> <c:out value="${data}"/> </body> </html>
这将产生如下所示结果:
八、<c:forEach>,<c:forTokens>
这些标签是通过一个小脚本嵌入Java for,while或do-while循环的不错的选择。<c:forEach>
标签更常用的标签,因为它遍历一个对象集合。<c:forTokens>
标签用于将一个字符串分成token并遍历每个token。
属性:
<c:forEach>
标签具有如下所示属性:
属性 | 描述 | 是否必需 | 默认值 |
---|---|---|---|
items | 遍历的信息 | 否 | 无 |
begin | 开始的元素(0=第一个项目,1=第二个项目,...) | 否 | 0 |
end | 结束的元素 (0=第一个项目,1=第二个项目,...) | 否 | 最后一个元素 |
step | 处理每一步的元素 | 否 | 1 |
var | 显示当前项目的变量名 | 否 | 无 |
varStatus | 显示循环状态的变量名 | 否 | 无 |
该标签与<c:forTokens>标签具有相同的属性,另外<c:forEach>标签有一个额外的属性delims指定了用作分隔符的符号。
属性 | 描述 | 是否必需 | 默认值 |
---|---|---|---|
delims | 用作分隔符的符号 | 是 | 无 |
<c:forEach>的实例:
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %> <html> <head> <title>Tag Example</title> </head> <body> <c:forEach var="i" begin="1" end="5"> Item <c:out value="${i}"/><p> </c:forEach> </body> </html>
这将产生如下所示结果:
<c:forTokens>的实例:
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %> <html> <head> <title>Tag Example</title> </head> <body> <c:forTokens items="Zara,nuha,roshy" delims="," var="name"> <c:out value="${name}"/><p> </c:forTokens> </body> </html>
这将产生如下所示结果:
九、<c:param>
<c:param>
标签允许URL指定适当的URL请求参数,且允许任何必要的URL编码要求。
在<c:param>
标签内name属性表示参数名称,value属性显示参数值:
属性:
<c:param>
标签具有如下所示属性:
属性 | 描述 | 是否必需 | 默认值 |
---|---|---|---|
name | 在URL中设置的请求参数的名称 | 是 | 无 |
value | 在URL中设置的请求参数的值 | 否 | Body |
实例:
如果需要传递参数给<c:import>标签,首先使用<c:url>标签来创建 URL,如下所示:
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %> <html> <head> <title>Tag Example</title> </head> <body> <c:url value="https://www.baidu.com" var="myURL"> <c:param name="trackingId" value="1234"/> <c:param name="reportType" value="summary"/> </c:url> <c:import url="${myURL}"/> </body> </html>
这将产生如下所示结果:
将以这样的形式访问:https://www.baidu.com?trackingId=1234&reportType=summary
十、<c:redirect>
<c:redirect>
标签通过提供自动URL重写,将浏览器重定向到另一个URL,它支持上下文相关的URL,支持<c:param>
标签。
属性:
<c:redirect>
标签具有如下所示属性:
属性 | 描述 | 是否必需 | 默认值 |
---|---|---|---|
url | 重定向到用户浏览器 URL | 是 | 无 |
context | /紧随其后的是一个本地Web应用程序 | 无 | 当前应用程序 |
实例:
如果需要传递参数到<c:import>标签,首先使用<c:url>标签创建URL,如下所示:
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %> <html> <head> <title>Tag Example</title> </head> <body> <c:redirect url="http://www.baidu.com"/> </body> </html>
上述例子会重定向请求到http://www.baidu.com/
十一、<c:url>
<c:url>
标签将URL格式化成一个字符串,并将其存储到一个变量中。这个标签在必要时自动执行URL重写。var属性指定将包含格式化的URL的变量。
JSTL URL标记只是另一种编写调用response.encodeURL()方法的方法。URL标签唯一的真正优势是提供了适当的URL编码,包括由子param标签指定的任何参数。
属性:
<c:url>
标签具有如下所示属性:
属性 | 描述 | 是否必需 | 默认值 |
---|---|---|---|
value | URL | 是 | 无 |
context | /紧随其后的是本地Web应用程序的名称 | 否 | 当前应用程序 |
var | 显示被处理的URL的变量名 | 否 | 页面输出 |
scope | 显示被处理的URL的变量范围 | 否 | 页面 |
实例:
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %> <html> <head> <title>Tag Example</title> </head> <body> <a href="<c:url value="/jsp/index.htm"/>">TEST</a> </body> </html>
这将产生如下所示结果: