您的位置:首页 > Web前端 > JavaScript

JSTL 标签库<c:if> <:forEach> <:forTokens>

2017-07-25 14:06 453 查看

核心标签库

核心标签是最常用的JSTL标签。引用核心标签库的语法如下:
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
1
标签      描述
<c:out>     用于在JSP中显示数据,就像<%= ... >
<c:set>     用于保存数据
<c:remove>  用于删除数据
<c:catch>   用来处理产生错误的异常状况,并且将错误信息储存起来
<c:if>  与我们在一般程序中用的if一样
<c:choose>  本身只当做<c:when>和<c:otherwise>的父标签
<c:when>    <c:choose>的子标签,用来判断条件是否成立
<c:otherwise>   <c:choose>的子标签,接在<c:when>标签后,当<c:when>标签判断为false时被执行
<c:import>  检索一个绝对或相对 URL,然后将其内容暴露给页面
<c:forEach>     基础迭代标签,接受多种集合类型
<c:forTokens>   根据指定的分隔符来分隔内容并迭代输出
<c:param>   用来给包含或重定向的页面传递参数
<c:redirect>    重定向至一个新的URL.
<c:url>     使用可选的查询参数来创造一个URL
123456789101112131415更多标签库:http://www.runoob.com/jsp/jsp-jstl.html
UserInfo.java
//package com.jstl;

public class UserInfo {
private String name="";

public String getName() {
return name;
}

public void setName(String name) {
this.name = name;
}
}
12345678910111213
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
<!-- -----c:out------- -->
<c:out value="水平线标记<hr>" escapeXml="true"></c:out><br>
<!-- escapeXml="true"会将字符符号转换为实体代码 -->
<c:out value="水平线标记<hr>" escapeXml="false"></c:out>
<!-- -----c:set------- -->
<c:set var="username" value="默默" scope="request"></c:set>
<c:out value="username的值为:${username} "/><br>

<jsp:useBean id="userInfo" class="com.jstl.UserInfo"/>
<c:set target="${userInfo}" property="name">过火</c:set>
<c:out value="UserInfo的name的值为:${userInfo.name} "/>
<!-- -----c:set------- -->
</body>
</html>
123456789101112131415161718192021222324

<c:if>
条件判断标签

<c:if test="condition" var="name" [scope="范围"]>
1test 属性: 必选属性,指定条件表达式,可以使用 EL 表达式。 var 属性: 可选属性,用于指定变量名,该变量用于保存 test 属性的判断结果。 scope 属性: 指定变量的范围,默认为 page ,可选值有 page、request、session和application

循环标签

JSTL 标签库中包含
<c:forEach>
和 
<c:forTokens>
两个循环。

<:forEach>
循环标签

<:forEach>
循环标签可以根据循环条件,遍历数组和集合类的所有或部分数据。这些标签封装了Java中的for,while,do-while循环。 相比而言,
<c:forEach>
标签是更加通用的标签,因为它迭代一个集合中的对象。 
<c:forTokens>
标签通过指定分隔符将字符串分隔为一个数组然后迭代它们。
<c:forEach items="<object>"
[begin="<int>"]
[end="<int>"]
[step="<int>"]
[var="<string>"]
[varStatus="<string>"]>
标签体
</c:forEach>
12345678
<c:forEach>
标签有如下属性:
属性描述是否必要默认值
items要被循环的信息,多用于数组和集合类,可以通过EL指定
begin开始的元素(0=第一个元素,1=第二个元素)0
end最后一个元素(0=第一个元素,1=第二个元素)Last element
step每一次迭代的步长1
var代表当前条目的变量名称
varStatus指定循环状态的变量名称,有4个状态属性
变量类型描述
indexint当前循环的索引值,从0开始
countint当前循环的循环计数,从1开始
firstboolean是否为第一次循环
lastboolean是否为最后一次循环

示例1

<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
<c:forEach var="i" begin="1" end="5">
Item <c:out value="${i}"/><p>
</c:forEach>
</body>
</html>
123456789101112131415
Item 1

Item 2

Item 3

Item 4

Item 5
123456789

示例2

<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ page import="java.util.*"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<!DOCTYPE HTML>
<html>
<head>
<meta charset="utf-8">
<title>遍历List集合</title>
</head>
<body>
<%
List<String> list = new ArrayList<String>(); //创建List集合的对象
list.add("简单是可靠的先决条件"); //向List集合中添加元素
list.add("兴趣是最好的老师");
list.add("知识上的投资总能得到最好的回报");
request.setAttribute("list", list); //将List集合保存到request对象中
%>
<b>遍历List集合的全部元素:</b>
<br>
<c:forEach items="${requestScope.list}" var="keyword" varStatus="id">
${id.index } :${keyword}<br>
</c:forEach>

<b>遍历List集合中第1个元素以后的元素(不包括第1个元素):</b>
<br>
<c:forEach items="${requestScope.list}" var="keyword" varStatus="id"
begin="1">
${id.index } :${keyword}<br>
</c:forEach>

<b>更改 id.index 为 id.count</b>
<br>
<c:forEach items="${requestScope.list}" var="keyword" varStatus="id">
${id.count } :${keyword}<br>
</c:forEach>
</body>
</html>
1234567891011121314151617181920212223242526272829303132333435363738
遍历List集合的全部元素:
0 :简单是可靠的先决条件
1 :兴趣是最好的老师
2 :知识上的投资总能得到最好的回报
遍历List集合中第1个元素以后的元素(不包括第1个元素):
1 :兴趣是最好的老师
2 :知识上的投资总能得到最好的回报
更改 id.index 为 id.count
1 :简单是可靠的先决条件
2 :兴趣是最好的老师
3 :知识上的投资总能得到最好的回报
1234567891011${id.index} 在 
<c:forEach>
循环中,var 属性指定的变量,只在循环体中有效。

示例3

<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<!DOCTYPE HTML>
<html>
<head>
<meta charset="utf-8">
<title>应用<c:forEach>列举10以内全部奇数</title>
</head>
<body>
<b>10以内的全部奇数为:</b>
<c:forEach var="i" begin="1" end="10" step="2">
${i}  
</c:forEach>
</body>
</html>
1234567891011121314151617
10以内的全部奇数为: 1   3   5   7   9
1

示例4

<td style="padding:5px;"> ${BorrowForm.bookBarcode}></td>
1
.
.
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<%@ page import="com.actionForm.BorrowForm"%>
<%
BorrowDAO borrowDAO=new BorrowDAO();
Collection coll_book=(Collection)borrowDAO.bookBorrowSort();
request.setAttribute("coll_book", coll_book);
%>
<!-- coll_book是从数据库查询后的结果,集合类保存的BorrowForm对象,BorrowForm是一个JavaBean,图书信息类
c:forEach的item是待遍历的集合coll_book, var就是存储item指定的对象的成员
记得引入BorrowForm的路径
-->
.
.
<table width="95%"  border="1" cellpadding="0" cellspacing="0" bordercolor="#FFFFFF" bordercolordark="#B7B6B6" bordercolorlight="#FFFFFF">
<tr align="center">
<td width="5%" height="25">排名</td>
<td width="10%">图书条形码</td>
<td width="24%">图书名称</td>
<td width="10%">图书类型</td>
<td width="10%">书架</td>
<td width="14%">出版社</td>
<td width="11%">作者</td>
<td>定价(元)</td>
<td>借阅次数</td>
</tr>

<c:forEach items="${coll_book}" var="BorrowForm"
varStatus="status">
<tr>
<td height="25" align="center">${status.index+1}</td>
<td style="padding:5px;"> ${BorrowForm.bookBarcode}></td>
<td style="padding:5px;">${BorrowForm.bookName}</td>
<td style="padding:5px;">${BorrowForm.bookType}</td>
<td align="center"> ${BorrowForm.bookcaseName}</td>
<td align="center"> ${BorrowForm.pubName}</td>
<td width="11%" align="center">${BorrowForm.author}</td>
<td width="8%" align="center">${BorrowForm.price}</td>
<td width="8%" align="center">${BorrowForm.degree}</td>
</tr>
</c:forEach>

</table>
1234567891011121314151617181920212223242526272829303132333435363738394041424344

<:forTokens>
循环标签

<c:forTokens>
标签与
<c:forEach>
标签有相似的属性,不过
<c:forTokens>
还有另一个属性:
属性描述是否必要默认值
delims指定分隔字符串的分隔符
实例
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<html>
<head>
<title>c:forTokens 标签实例</title>
</head>
<body>
<c:forTokens items="google,你好啊冒号:runoob,taobao;分号" delims=", : ;" var="name">
<c:out value="${name}"/><p>
</c:forTokens>
</body>
</html>
12345678910111213
google
你好啊冒号
runoob
taobao
分号
12345
delims=", : ;"
 里可以指定一个或多个分隔符,如 
delims=",
"

                                            
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: