概述
JSTL需要使用taglibs-standard-impl.jar和taglibs-standard-spec.jar包。
不过我这里使用的开发环境是IDEA,使用JSTL标签会自动导入相关引用。
如:
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
核心标签库
通用标签
<c:out>标签
功能:用来显示数据的内容,与<%=表达式%>或${表达式}类似。
语法:
<c:out value="输出的数据" default="defaultValue"] />
其中value值可以是EL表达式也可以是字符串,default是可选属性,表单当value值不存在时输出defaultValue。
示例:
<c:out value="这是一个字符串" default="没有数据" />
<c:set>标签
功能一:设置作用域变量;
语法:
<c: set value="value" var="varName" [scope="page|request|session|application"] />
scope是一个可选属性,表示在哪一个范围内设置变量;
var表示变量的名称;
value表示变量的值。
示例:
<c:set value="张三" var="username" scope="session"/>
相当于
<% session.setAttribute("username","张三"); %>
功能二:设置JavaBean的属性。
语法:
<c:set value="value" target="target" property="propertyName" />
将value值赋给target对象(JavaBean对象)的propertyName属性。
如果target为null或没有set方法则抛出异常。
<c:remover>标签
功能:删除某个变量。
语法:
<c:remove var="变量名" scope"page|reequest|session|application" />
示例:
<c:remove var="username" scope="session" />
相当于
<% session.removeAttribute("username") %>
流程控制标签
<c:if>标签
功能:实现if语句的作用,条件判断。
语法:
<c:if test="条件表达式">
条件成立执行的内容
</c:if>
条件表达式可以是EL表达式也可以是JSP表达式。
如果表达式的值为true,则会执行主体内容,没有对应的<c:else>标签,因此如果如果条件不成立则需要使用<c:choose>、<c:when>及<c:other>标签。
示例:
<c:if test="${3>2}">
${true}
</c:if>
<c:choose>、<c:when>及<c:otherwise>标签
功能:<c:choose>、<c:when>及<c:otherwise>标签实现if/elseif/else语句的作用
语法:
<c:choose>
<c:when test="条件表达式1">
主体内容1
</c:when>
<c:when test="条件表达式2">
主体内容2
</c:when>
<c:otherwise>
表达式都不成立时执行的主体内容
</c:otherwise>
</c:choose>
示例:
<c:choose>
<c:when test="${3>2}">
3大于2
</c:when>
<c:otherwise>
3不大于2
</c:otherwise>
</c:choose>
迭代标签
<c:forEach>标签
功能:实现for循环。
语法:
<c:forEach var="变量名" items="数组|Collection对象">
循环体
</c:forEach>
items属性可以是数组也可以是集合对象,每次循环读取其中的一个元素,并赋值给var属性指定的变量,然后就可以在循环体中使用var指定的变量获取对象的元素。
示例:
<%
String[] users={"张三","李四","王五"};
%>
<c:forEach var="user" items="<%=users%>">
${user}
</c:forEach>
在有些情况下需要为<c:forEach>标签指定begin、end、step和varStatus属性。
- begin:为迭代时的开始位置,默认值为0;
- end:为迭代时的结束位置,默认值是最后一个元素;
- step:为迭代步长,默认值为1;
- varStatus:为迭代变量的状态,包括count(迭代的次数)、index(当前迭代的索引,第一个索引为0)、first(是否为第一个迭代对象)和last(是否为最后一个迭代对象)。
<c:forTokens>标签
功能:用于迭代字符串中由分隔符分隔的各成员。
语法:
<c:forTokens items="要迭代的字符串对象" delims="指定分隔字符串的分隔符" var="变量名">
循环体
</c:forTokens>
也有begin、end、step和varStatus属性,用法相同。
示例:
<c:forTokens items="A,B,C,D,E,F" delims="," var="str">
${str}<br>
</c:forTokens>