`

JSTL-CORE标签-if、choose、when、otherwist、forEach、forTokens

    博客分类:
  • JSTL
 
阅读更多

 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">
			&nbsp;&nbsp;&nbsp;&nbsp;
			<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

 

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics