JSP页面引入:<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
1.<c:if>
if标签的作用和Java程序中的if语句作用相同,用于判断条件语句。
标签使用格式:
<c:if test=”checkCondition” var=”varName” scope=”page|request|session|application” />
<c:if test=”checkCondition” var=”VarName” scope=”page|request|session|application” >
body content
</c:if>
参数:
test:判断条件的表达式,返回类型为true或者false。
var:这个变量用于保存test条件表达式判断所返回的true或者false值。
scope:指定var变量所在的有效范围。
例子:
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<html>
<head>
<title>JSTL if标签</title>
</head>
<body>
<%
String val = "abc";
request.setAttribute("val", val);
%>
<c:if test="${val=='abc'}" var="flag" />
<c:out value="判断结果为:"></c:out>
<c:out value="${flag}" />
<br />
<c:if test="${flag==true}">
字符串内容是abc.
</c:if>
<c:if test="${flag==false}">
字符串内容不是abc.
</c:if>
<hr />
<c:if test="${val=='abc'}" var="flag2">
字符串内容为abc.
</c:if>
<br />
<c:out value="判断结果为:"></c:out>
<c:out value="${flag2}" />
<hr />
<c:if test="${val=='abcd'}" var="flag3">
字符串内容为abcd.
</c:if>
<br />
<c:out value="判断结果为:"></c:out>
<c:out value="${flag3}" />
</body>
</html>
输出:
判断结果为: true
字符串内容是abc.
字符串内容为abc.
判断结果为: true
判断结果为: false
2.<c:choose>
这些标签一般是组合起来一起使用的,就相当于Java程序中的switch条件语句。
在<c:choose>标签体中包括<c:when>和<c:otherwise>子标签。<c:when>子标签代表<c:choose>的一个条件分支。
<c:otherwise>子标签必须使用在<c:choose>标签的体内,而且必须是在最后的分支上。
例子:
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<html>
<head>
<title>JSTL choose标签</title>
</head>
<body>
<%
int val = 1;
request.setAttribute("val", val);
%>
<c:choose>
<c:when test="${val==1}">
<c:out value="Val值为1." />
</c:when>
<c:when test="${val==2}">
<c:out value="Val值为2." />
</c:when>
<c:otherwise>
<c:out value="Val为其他值." />
</c:otherwise>
</c:choose>
<br />
<c:choose>
<c:when test="${val==2}">
<c:out value="Val值为1." />
</c:when>
<c:when test="${val==3}">
<c:out value="Val值为2." />
</c:when>
<c:otherwise>
<c:out value="Val为其他值." />
</c:otherwise>
</c:choose>
</body>
</html>
输出:
Val值为1.
Val为其他值.
3.<c:forEach>
forEach标签使用来对一个Collection集合中的一系列对象进行迭代输出,并且可以指定迭代次数。
使用格式如下:
<c:forEach items=”collection” var=”varName” [varstatus=”varStatusName”]
[begin=”begin”] [end=”end”] [step=”step”]>
body content
</c:forEach>
参数:
var:也就是保存在Collection集合类中的对象名称。
items:将要迭代的集合类名。
varStatus:存储迭代的状态信息,可以访问到迭代自身的信息。
begin:如果指定了begin值,就表示从items[begin]开始迭代,如果没有指定begin值,则从集
合的第一个值开始迭代。
end:表示迭代到集合的end位时结束,如果没有指定end值,则表示一直迭代中集合的最后一
位。
step:指定迭代的步长。
例子:
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<%@ page import="test.jstl.Test,java.util.List,java.util.ArrayList"%>
<html>
<head>
<title>JSTL choose标签</title>
</head>
<body>
<%
List<Test> list = new ArrayList<Test>();
Test test = new Test();
test.setName("名字1");
test.setValue("值1");
list.add(test);
test = new Test();
test.setName("名字2");
test.setValue("值2");
list.add(test);
test = new Test();
test.setName("名字3");
test.setValue("值3");
list.add(test);
test = new Test();
test.setName("名字4");
test.setValue("值4");
list.add(test);
request.setAttribute("list", list);
%>
<c:out value="直接输出:"></c:out>
<br />
<c:forEach items="${list}" var="test">
<c:out value="${test.name}"></c:out>
<c:out value=","></c:out>
<c:out value="${test.value}"></c:out>
<br />
</c:forEach>
<hr />
<c:out value="指定输出:"></c:out>
<br />
<c:forEach items="${list}" var="test" begin="1" step="2">
<c:out value="${test.name}"></c:out>
<c:out value=","></c:out>
<c:out value="${test.value}"></c:out>
<br />
</c:forEach>
<hr />
<c:out value="全部信息输出:"></c:out>
<br />
<table border="1">
<tr>
<td><c:out value="索引" /></td>
<td><c:out value="迭代次数" /></td>
<td><c:out value="是否第一个" /></td>
<td><c:out value="是否最后一个" /></td>
<td><c:out value="名字"></c:out></td>
<td><c:out value="值"></c:out></td>
<c:forEach items="${list}" var="test" varStatus="s">
<tr>
<td><c:out value="${s.index}" /></td>
<td><c:out value="${s.count}" /></td>
<td><c:out value="${s.first}" /></td>
<td><c:out value="${s.last}" /></td>
<td><c:out value="${test.name}"></c:out></td>
<td><c:out value="${test.value}"></c:out></td>
</tr>
</c:forEach>
</table>
<br />
<c:out value="forEach处理字符串a,b,c:"></c:out>
<br />
<c:forEach items="a,b,c" var="val">
<c:out value="${val}"></c:out>
<br />
</c:forEach>
</body>
</html>
输出:
直接输出:
名字1 , 值1
名字2 , 值2
名字3 , 值3
名字4 , 值4
指定输出:
名字2 , 值2
名字4 , 值4
全部信息输出:
索引 | 迭代次数 | 是否第一个 | 是否最后一个 | 名字 | 值 |
0 | 1 | true | false | 名字1 | 值1 |
1 | 2 | false | false | 名字2 | 值2 |
2 | 3 | false | false | 名字3 | 值3 |
3 | 4 | false | true | 名字4 | 值4 |
forEach处理字符串a,b,c:
a
b
c
4.<c:forTokens>
forTokens标签的作用和Java中的StringTokenizer类的作用非常相似,它通过items属性来指定一个特定的字符串,然后通过delims属性指定一种分隔符(可以同时指定多个),通过指定的分隔符把items属性指定的字符串进行分组。和forEach标签一样,forTokens标签也可以指定begin和end以及step属性值。
使用格式如下:
<c:forTokens items=”stringOfTokens” delims=”delimiters” var=”varName”
[varStatus=”varStatusName”] [begin=”begin”] [end=”end”] [step=”step”]>
body content
</c:forTokens>
参数:
var:进行迭代的参数名称。
items:指定的进行标签化的字符串。
varSatus:每次迭代的状态信息。
delims:使用这个属性指定的分隔符来分割items指定的字符串。
begin:开始迭代的位置。
end:迭代结束的位置。
step:迭代的步长。
例子:
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<%@ page import="test.jstl.Test,java.util.List,java.util.ArrayList"%>
<html>
<head>
<title>JSTL forTokens标签</title>
</head>
<body>
<%
String str = "a,b,c|d,e,f,g|h,i,j";
request.setAttribute("str", str);
%>
<c:out value="字符串内容为:"></c:out>
<c:out value="${str }"></c:out>
<br />
<c:out value="forTokens标签,按\",\"分隔输出:"></c:out>
<br />
<c:forTokens items="${str }" delims="," var="val">
<c:out value="${val}"></c:out>
<br />
</c:forTokens>
<hr />
<c:out value="forTokens标签,按\"|\"分隔输出:"></c:out>
<br />
<c:forTokens items="${str }" delims="|" var="val">
<c:out value="${val}"></c:out>
<br />
</c:forTokens>
<hr />
<c:out value="forTokens标签,按\",\"和\"|\"分隔输出:"></c:out>
<br />
<c:forTokens items="${str }" delims=",|" var="val">
<c:out value="${val}"></c:out>
<br />
</c:forTokens>
<hr />
<c:out value="forTokens标签,双重迭代按\",\"和\"|\"分隔输出:"></c:out>
<br />
<c:forTokens items="${str }" delims="|" var="val">
<c:out value="${val}"></c:out>
<br />
<c:forTokens items="${val }" delims="," var="val2">
<c:out value="${val2}"></c:out>
<br />
</c:forTokens>
</c:forTokens>
<hr />
<c:out value="forEach标签也可以处理:"></c:out>
<br />
<c:forEach items="${str }" var="val">
<c:out value="${val}"></c:out>
<br />
</c:forEach>
</body>
</html>
输出:
字符串内容为: a,b,c|d,e,f,g|h,i,j
forTokens标签,按","分隔输出:
a
b
c|d
e
f
g|h
i
j
forTokens标签,按"|"分隔输出:
a,b,c
d,e,f,g
h,i,j
forTokens标签,按","和"|"分隔输出:
a
b
c
d
e
f
g
h
i
j
forTokens标签,双重迭代按","和"|"分隔输出:
a,b,c
a
b
c
d,e,f,g
d
e
f
g
h,i,j
h
i
j
forEach标签也可以处理:
a
b
c|d
e
f
g|h
i
j