SpringMVC中JSTL的C标签库以及c⽤法
⼀、JSTL的C标签库使⽤
(⼀)<c:forEach>⽤于循环遍历,输出所有的元素
使⽤<c:forEach>要先导⼊标签库:<%@taglib uri="java.sun/jsp/jstl/core" prefix="c" %> 才可以以使⽤。
(⼆)<c:forEach>的参数及⽤法:
jstl常用标签有哪些items ⽤于接收集合对象,
var 定义对象接收从集合⾥遍历出的每⼀个元素。同时其会⾃动转型
begin 定义遍历的开始位置,
end定义遍历的结束位置。begin 和end的引号必须写。
varStatus 表⽰当前集合的状态,可以访问当前集合元素的信息。
使⽤⽅法⽰例:
<c:forEach var="item" items="${webFrameworkList}">${item}</c:forEach>
循环遍历,输出⼀个范围类的元素。
<c:foreach items ="${lis}" var = "li " begin="2" end ="12">
${li}
</c:foreach>
(三)varStatus的⽤法
JSTL中的varStatus和 var 属性⼀样, varStatus ⽤于创建限定了作⽤域的变量。不过,由 varStatus 属性命名的变量并不存储当前索引值或当前元素,⽽是赋予 javax.servlet.LoopTagStatus 类的实例。该类定义了⼀组特性,它们描述了迭代的当前状态。
特性 Getter 描述current getCurrent() 当前这次迭代的(集合中的)项
index getIndex() 当前这次迭代从 0 开始的迭代索引
count getCount() 当前这次迭代从 1 开始的迭代计数
first isFirst() ⽤来表明当前这轮迭代是否为第⼀次迭代的标志
last isLast() ⽤来表明当前这轮迭代是否为最后⼀次迭代的标志
begin getBegin() begin 属性值
end getEnd() end 属性值
step getStep() step 属性值
使⽤⽅法⽰例:
循环遍历,输出除某个元素以外的元素或输出指定元素。
<c:foreach items="${list}" var ="li" varStatus="status">
<c:if text="${unt==1}>
${"第⼀个元素不要"}
</c:if>
${li}
</ c:foreach>
⼀、jstl标签介绍:jstl标签是为了解决EL表达式不能循环取出集合对象的问题,是建⽴在EL表达式基础上的语⾔,两者之间是互通的,⼆、各种标签的⽤法
1、输出<c:out> 语法:
Java代码
1. <c:out value="expression" default="expression" escapeXml="boolean"/>
说明: 该标记对由其 value 属性指定的表达式进⾏求值,然后打印结果。如果指定了可选属性 default,那么,在对 value 属性的表达式求值所得结果为 null 或空 String 的情况下,<c:out> 将打印其值。 escapeXml 属性也是可选的。它控制当⽤ <c:out> 标记输出诸
如“<”、“>”和“&”之类的字符(在 HTML 和 XML 中具有特殊意义)时是否应该进⾏转义。如果将 escapeXml 设置为 true,则会⾃动将这些字符转换成相应的 XML 实体(此处提到的字符分别转换成 <、> 和 &)。 例:
Java代码
1. <c:out value="${userpany}" escapeXml=="false"/>
2、赋值<c:set> 语法:
Java代码
1. <c:set var="name" scope="scope" value="expression"/>
说明: <c:set> 操作提供基于标记的机制来创建和设置限制了作⽤域的变量。其中 var 属性指定了限制了作⽤域的变量的名称,scope 属性表明了该变量驻留在哪个作⽤域中,value 属性指定了分配给该变量的值。如果指定变量已经存在,则简单地将所指明的值赋给它。如果不存在,则创建新的限制了作⽤域的变量,并⽤该值初始化这个变量。 scope 属性是可选的,其缺省值是 page。 例:
Java代码
1. <c:set var="timezone" scope="session" value="CST"/>
2. <c:set var="square" value="${param['x'] * param['x']}"/>
3、循环 语法:
Java代码
1. <c:forEach var="name" items="expression"
2. varStatus="name" begin="expression"
3. end="expression" step="expression">
4. body content
5. </c:forEach>
说明: begin 和 end 属性要么是静态整数值,要么是可以得出整数值的表达式。它们分别指定迭代索引的初始值以及迭代索引的终⽌值。当使⽤ <c:forEach> 在整数范围内进⾏迭代时,这两个属性是必需的,⽽其它所有属性都是可选的。 当出现 step 时,它也必须是整数值。它指定每次迭代后索引的增量。 如果指定了 var 属性,那么将会创建⼀个带有指定名称的并限定了作⽤域的变量,并将每次迭代的当前索引值赋给该变量。 items 属性的值应该是⼀个集合,对该集合的成员进⾏迭代,通常使⽤ EL 表达式指定值。 和 var 属性⼀样,varStatus ⽤于创建限定了作⽤域的变量。不过,由 varStatus 属性命名的变量并不存储当前索引值或当前元素,⽽是赋予
javax.servlet.LoopTagStatus 类的实例。 例:
Java代码
1. <table>
2. <c:forEach items=
3. "${entryList}" var="blogEntry" varStatus="status">
4. <tr><td align="left" class="blogTitle">
5. <c:out value="${unt}"/>.
6. <c:out value="${blogEntry.title}" escapeXml="false"/>
7. </td></tr>
8. <tr><td align="left" class="blogText">
9. <c:out value="${}" escapeXml="false"/>
10. </td></tr>
11. </c:forEach>
12. </table>
4、If判断 语法:
Java代码
1. <c:if test="expression" var="name" scope="scope">
2. body content
3. </c:if>
说明: 测试表达式(test属性值)进⾏求值,接下来,仅当对表达式求出的值为 true 时,它才处理标记的主体内容 <c:if> 通过其 var 和scope 属性(它们所起的作⽤和在 <c:set> 中所起的作⽤⼀样)选择将测试结果赋给限定了作⽤域的变量。 例:
Java代码
1. <table>
2. <c:forEach items=
3. "${entryList}" var="blogEntry" varStatus="status">
4. <c:if test="${status.first}">
5. <tr><td align="left" class="blogDate">
6. <c:out value="${ated}"/>
7. </td></tr>
8. </c:if>
9. <tr><td align="left" class="blogTitle">
10. <c:out value="${blogEntry.title}" escapeXml="false"/>
11. </td></tr>
12. <tr><td align="left" class="blogText">
13. <c:out value="${}" escapeXml="false"/>
14. </td></tr>
15. </c:forEach>
16. </table>
Choose操作语法 语法:
Java代码
1. <c:choose>
2. <c:when test="expression">
3. body content
4. </c:when>
5. ...
6. <c:otherwise>
7. body content
8. </c:otherwise>
9. </c:choose>
说明: 每个要测试的条件都由相应的 <c:when> 标记来表⽰,⾄少要有⼀个 <c:when> 标记。只会处理第⼀个其 test 值为 true 的
<c:when> 标记体内的内容。如果没有⼀个 <c:when> 测试返回 true ,那么会处理 <c:otherwise> 标记的主体内容。 例:
Java代码
1. <c:choose>
2. <c:when test="${quest.scheme eq 'http'}">
3. This is an insecure Web session.
4. </c:when>
5. <c:when test="${quest.scheme eq 'https'}">
6. This is a secure Web session.
7. </c:when>
8. <c:otherwise>
9. You are using an unrecognized Web protocol. How did this happen?!
10. </c:otherwise>
11. </c:choose>
<c:url> 操作的语法 语法:
Java代码
1. <c:url value="expression" context="expression" var="name" scope="scope">
2. <c:param name="expression" value="expression"/>
3. ...
4. </c:url>
说明: <c:url> 标记,⽤于⽣成 URL。 value 属性⽤来指定基本 URL,然后在必要时标记对其进⾏转换。如果这个基本 URL 以⼀个斜杠开始,那么会在它前⾯加上 servlet 的上下⽂名称。可以使⽤ context 属性提供显式的上下⽂名称。如果省略该属性,那么就使⽤当前servlet 上下⽂的名称。这⼀点特别有⽤,因为 servlet 上下⽂名称是在部署期间⽽不是开发期间决定的。(如果这个基本 URL 不是以斜杠开始的,那么就认为它是⼀个相对 URL,这时就不必添加上下⽂名称。) 如果通过嵌套 <c:param> 标记指定了任何请求参数,那么将会使⽤ HTTP GET 请求的标准表⽰法将它们的名称和值添加到⽣成的 URL 后⾯。此外,还进⾏ URL 编码:为了⽣成有效的 URL,将对这些参数的名称或值中出现的任何字符适当地进⾏转换。 例:
Java代码
1. <a href="<c:url value='/content/sitemap.jsp'/>">View sitemap</a>
2. <c:url value="/content/search.jsp">
3. <c:param name="keyword" value="${searchTerm}"/>
4. <c:param name="month" value="02/2003"/>
5. </c:url>
<c:redirect> 操作的语法 语法:
Java代码
1. <c:redirect url="expression" context="expression">
2. <c:param name="expression" value="expression"/>
3. ...
4. </c:redirect>
说明: <c:redirect>⽤于向⽤户的浏览器发送 HTTP 重定向响应,它是 JSTL 中与 javax.servlet.http.HttpServletResponse 的sendRedirect() ⽅法功能相当的标记。 例:
Java代码
1. <c:catch var="exception">
2. <c:import url="ftp://ample/package/README"/>
3. </c:catch>
4. <c:if test="${not empty exception}">
5. <c:redirect url="/errors/remote.jsp"/>
6. </c:if>
所有使⽤c标签的过程中,使⽤了var属性,代表保存了该数据,则都可以通过EL表达式取出,${var的变量名}。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论