记录一下JSTL的c标签内容,不是很全。
导入Taglib伪指令
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<%@ taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix="fmt" %>
<%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn" %>
1、输出
语法:
<c:out value="expression" default="expresion" escapeXml="boolean"/>
说明:
输出value中的值,如果value中的值为null或者空的String,会默认输出default中的值。escapeXml是可选参数,表示当用 <c:out>
标记输出诸如“<”、“>”和“&”之类的字符(在 HTML 和 XML 中具有特殊意义)时是否应该进行转义。如果将 escapeXml 设置为 true,则会自动将这些字符转换成相应的 XML 实体(此处提到的字符分别转换成<、> 和 &
)。
例:
<c:out value="${user.company}" escapeXml=="false"/>
2、赋值
语法:
<c:set var="name" scope="scope" value="expression"/>
说明:
使用标记来创建变量并限制了变量的作用域。var属性指定名称,scope属性表明该变量的作用域,value属性指定变量的值。如果该变量已经存在就简单的赋值,如果不存在就创建赋值,并指定作用域。scope属性是可选的,其缺省值是page。
例:
<c:set var="timezone" scope="session" value="CST"/>
<c:set var="square" value="${param['x'] * param['x']}"/>
3、循环
语法:
<c:forEach var="name" items="expression" varStatus="name" begin="expresion" end="expression" step="expression">
body content
</c:forEach>
说明:
begin和end属性要么是静态整数值,要么是可以得出整数的表达式。分别代表迭代索引的初始值和终止值。当使用<c:forEach>
在整数范围内进行迭代时,这两个属性是必需的,而其他所有属性都是可选的。
step也是可选的,表示每次迭代索引的增量。
如果指定了var属性,将会创建一个带有指定名称的并有作用域的变量,每次迭代的当前索引值赋给该变量。
items属性的值应该是一个集合,对给集合的成员进行迭代。通常使用EL表达式指定值。
和var属性一样,varstatus用于创建限定了作用域的变量。不过,由varstatus属性命名的变量并不存储当前索引值或当前元素,而是赋值javax.servlet.jsp.jstl.core.LoopTagStatus 类的实例。
例:
<table>
<c:forEach items=
"${entryList}" var="blogEntry" varStatus="status">
<tr><td align="left" class="blogTitle">
<c:out value="${status.count}"/>.
<c:out value="${blogEntry.title}" escapeXml="false"/>
</td></tr>
<tr><td align="left" class="blogText">
<c:out value="${blogEntry.text}" escapeXml="false"/>
</td></tr>
</c:forEach>
</table>
4、If判断
语法:
<c:if test="expression" var="name" scope="scope">
body content
</c:if>
说明:
对test属性的表达式进行求值,只有为真,才执行主体内容。可指定将测试结果赋值给可选属性var指定的变量,可选属性scope指定变量的作用域。
例:
<c:if test="${status.first}">
<tr><td align="left" class="blogDate">
<c:out value="${blogEntry.created}"/>
</td></tr>
</c:if>
5、Choose操作
语法:
<c:choose>
<c:when test="expression">
body content
</c:when>
...
<c:otherwise>
body content
</c:otherwise>
</c:choose>
说明:
相当于java中的switch语句,每个测试的条件都要由<c:when>
来标记,可以有多个,但是只会处理其中test属性标记为true的<c:when>
中的主体内容。如果没有一个<c:when>
测试返回true,那么会处理<c:otherwise>
标记的主体内容。
例:
<c:choose>
<c:when test="${pageContext.request.scheme eq 'http'}">
This is an insecure Web session.
</c:when>
<c:when test="${pageContext.request.scheme eq 'https'}">
This is a secure Web session.
</c:when>
<c:otherwise>
You are using an unrecognized Web protocol. How did this happen?!
</c:otherwise>
</c:choose>
6、url操作
语法:
<c:url value="expression" context="expression" var="name" scope="scope">
<c:param name="expression" value="expression"/>
</c:url>
说明:
<c:url>
用于生成url。value属性用来指定基本url,然后在必要时对其进行转换。如果这个基本URL以一个斜杠开始,那么会在它前面加上servlet的上下文名称。可以使用context属性提供显式的上下文名称。如果省略该属性,那么就使用当前servlet上下文的名称。这一点特别有用,因为servlet上下文名称是在部署期间而不是开发期间决定的。(如果这个基本URL不是以斜杠开始的,那么就认为它是一个相对URL,这时就不必添加上下文名称。)
如果通过嵌套<c:param>
标记指定了任何请求参数,那么将会使用HTTP GET请求的标准表示法将它们的名称和值添加到生成的URL后面。此外,还进行URL编码:为了生成有效的URL,将对这些参数的名称或值中出现的任何字符适当地进行转换。
例:
<a href="<c:url value='/content/sitemap.jsp'/>">View sitemap</a>
<c:url value="/content/search.jsp">
<c:param name="keyword" value="${searchTerm}"/>
<c:param name="month" value="02/2003"/>
</c:url>
7、<c:redirect>
操作
语法:
<c:redirect url="expression" context="expression">
<c:param name="expression" value="expression">
...
</c:redirect>
说明:
<c:redirect>
用于向用户的浏览器发送HTTP重定向响应,它是JSTL中与javax.servlet.http.HttpServletResponse的sendRedirect()方法功能相当的标记。
例:
<c:catch var="exception">
<c:import url="ftp://ftp.example.com/package/README"/>
</c:catch>
<c:if test="${not empty exception}">
<c:redirect url="/errors/remote.jsp"/>
</c:if>