`

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

 

分享到:
评论

相关推荐

    jstl-1.2.jar免费下载

    jstl-1.2.jar下载jstl-1.2.jar下载jstl-1.2.jar下载jstl-1.2.jar下载jstl-1.2.jar下载jstl-1.2.jar下载jstl-1.2.jar下载jstl-1.2.jar下载jstl-1.2.jar下载jstl-1.2.jar下载jstl-1.2.jar下载jstl-1.2.jar下载jstl-1.2...

    jstl-api-1.2和jstl-impl-1.2

    jstl-api-1.2和jstl-impl-1.2,jstl-api-1.2和jstl-impl-1.2,jstl-api-1.2和jstl-impl-1.2,jstl-api-1.2和jstl-impl-1.2

    jstl-api-1.2.jar、jstl-impl-1.2.jar

    - `&lt;c:choose&gt;`, `&lt;c:when&gt;`, `&lt;c:otherwise&gt;`:多条件判断 - `&lt;c:forEach&gt;`:迭代遍历集合 - `&lt;c:set&gt;`, `&lt;c:remove&gt;`:设置和移除变量 **SQL模块** 提供了与数据库交互的标签,如执行SQL查询、处理结果集等: - `...

    jstl标签jar包(jstl-api-1.2和jstl-impl-1.2)

    - `&lt;c:if&gt;` 和 `&lt;c:choose&gt;`:条件判断。 - `&lt;c:when&gt;` 和 `&lt;c:otherwise&gt;`:选择结构。 - `&lt;c:forLoop&gt;` 和 `&lt;c:forEach&gt;`:循环操作。 - `&lt;c:url&gt;` 和 `&lt;c:param&gt;`:创建URL并添加参数。 - `&lt;c:remove&gt;`:移除一个...

    jstl-1.2.1 jar

    jstl-1.2.1,之前的版本需要在服务器中配置一下,而且它分成了两个jar(jstl.jar和standard.jar)还有一个tld文件,而1.2已经不用配置了,直接把javax.servlet.jsp.jstl-1.2.1.jar和javax.servlet.jsp.jstl-api-1.2.1...

    jstl-impl-1.2.jar和jstl-api-1.2.jar

    `jstl-impl.jar`通常包含Core、Format、Function、SQL和XML五个主要的标签库,每个库都有对应的标签和功能。 在实际项目中,为了使JSTL能够正常工作,这两个jar文件通常需要一起添加到项目的类路径(Classpath)中...

    jstl-1.2.jar、jstl-api-1.2.jar、jstl-impl-1.2.jar三个包

    java.lang.NoClassDefFoundError: javax/servlet/jsp/jstl/core/Config,以上错误可以使用以下策略试试,tomcat的lib文件夹下加入:jstl-1.2.jar、jstl-api-1.2.jar、jstl-impl-1.2.jar三个包。

    jstl-impl-1.2.jar

    jstl-api-1.2、jstl-impl-1.2.jar标签包,两份。

    [jstl-1.2.jar]和[jstl-api-1.2.jar、standard.jar]两个版本.zip

    导入时需要将两个都导入,jstl-1.2.jar是高版本的,是将低版本的两个文件合成一个了,故只需要导入一个文件即可,导入的同时在jsp文件首行写入 &lt;%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" ...

    jstl-impl-1.2.jar.rar_ jstl-impl-1.2.jar _jstl-impl-1.2_jstl-imp

    标签中的"_jstl-impl-1.2.jar_ jstl-impl-1.2 jstl-impl-1.2.jar jstl.impl jstl.jar"进一步强调了JSTL的实现版本1.2,"impl"通常表示这是实现层,而非API接口。"jstl.jar"可能是指JSTL的核心库,不包含具体实现,而...

    jakarta.servlet.jsp.jstl-api-2.0.0.jar

    1. **Core Library**(c:):提供了基本的控制流和数据处理功能,如条件语句(if, choose, when, otherwise)、迭代(forEach, forTokens)、URL重写(redirect, url)等。 2. **Format/Internationalization ...

    包含jstl-api-1.2.1.jar,jstl-1.2.jar,jstl-impl-1.2.jar,standard-1.1.2.jar

    在Java Web开发中,JSTL(JavaServer...例如,使用`&lt;c:if&gt;`标签进行条件判断,`&lt;c:forEach&gt;`进行循环,`&lt;fmt:formatDate&gt;`进行日期格式化等。为了使用这些功能,需要在JSP页面顶部引入JSTL库的标签库定义,如: ```jsp ...

    standard-1.1.2.jar,jstl-api-1.2.jar,jstl-impl-1.2.jar,jstl-1.2.jar

    Tomcat启动报错 java.lang.ClassNotFoundException: org.apache.jsp.index_jsp,检查你的项目中是否存在jsp-api.jar,jstl-api.jar,servlet-api.jar。

    jstl-api-1.2.jar和jstl-impl.jar

    在描述中提到的"必须用到的两个标签库"可能是指Core库,这是JSTL最常用的部分,提供了基本的控制结构和数据操作标签。 使用JSTL的好处在于代码分离和可维护性提升。通过将业务逻辑从JSP页面中移出,JSP文件可以保持...

    jstl-api-1.2.jar

    例如`&lt;c:if&gt;`, `&lt;c:choose&gt;`, `&lt;c:when&gt;`, `&lt;c:otherwise&gt;`, `&lt;c:forEach&gt;`, `&lt;c:forTokens&gt;`等。 2. ** fmt 标签库**:用于国际化和格式化数据,支持日期、时间、数字的格式化,以及资源包的管理。例如`...

    jstl-api-1.2.jar jstl-impl-1.2.jar

    - **Core标签库**:提供了基本的控制结构,如`&lt;c:if&gt;`、`&lt;c:choose&gt;`、`&lt;c:forEach&gt;`等,用于条件判断和循环。 - **Format/International化标签库** (`fmt`库):支持日期、时间、数字的格式化,以及多语言国际化...

    内含jstl-1.2、jstl-api-1.2、jstl-impl-1.2、standard-1.1.2

    - **标签的使用**:例如,`&lt;c:forEach&gt;`用于遍历集合,`&lt;c:if&gt;`用于条件判断,`&lt;c:choose&gt;`、`&lt;c:when&gt;`、`&lt;c:otherwise&gt;`用于多条件分支,`&lt;fmt:formatDate&gt;`用于日期格式化等。 - **部署与配置**:在web.xml中...

    jst-1.2、jstl-api-1.2、jstl-impl-1.2的jar包

    JSTL的核心标签库(core)提供了常见的控制结构,如`&lt;c:if&gt;`和`&lt;c:forEach&gt;`,用于条件判断和循环。JDBC标签库(jdbc)支持数据库操作,如查询和事务管理。XML处理标签库(fmt)则用于XML文档的解析和操作。最后,...

    jstl-api.jar和jstl-impl-1.2.jar.zip

    jstl-api.jar和jstl-impl-1.2.jar.zip

    jstl-impl-1.2.2.jar

    jstl-impl-1.2.2.jar!

Global site tag (gtag.js) - Google Analytics