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>

这将产生如下所示结果:

 

posted @ 2017-06-07 20:41  EasonJim  阅读(518)  评论(0编辑  收藏  举报