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


港岛妹妹,你献给我的西班牙馅饼
甜蜜地融化了我
港岛妹妹,我们曾拥有的甜蜜的爱情
疯狂地撕裂了我


核心标签库

核心标签是最常用的JSTL标签。引用核心标签库的语法如下:

<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
标签      描述
<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

更多标签库: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;
    }   
}
<%@ 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>

<c:if>条件判断标签

<c:if test="condition" var="name" [scope="范围"]>

test 属性: 必选属性,指定条件表达式,可以使用 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>

<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>
Item 1

Item 2

Item 3

Item 4

Item 5
示例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 }&nbsp;:${keyword}<br>
    </c:forEach>

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

    <b>更改 id.index 为 id.count</b>
    <br>
    <c:forEach items="${requestScope.list}" var="keyword" varStatus="id">
        ${id.count }&nbsp;:${keyword}<br>
    </c:forEach>
</body>
</html>
遍历List集合的全部元素: 
0 :简单是可靠的先决条件
1 :兴趣是最好的老师
2 :知识上的投资总能得到最好的回报
遍历List集合中第1个元素以后的元素(不包括第1个元素): 
1 :兴趣是最好的老师
2 :知识上的投资总能得到最好的回报
更改 id.index 为 id.count 
 1 :简单是可靠的先决条件
2 :兴趣是最好的老师
3 :知识上的投资总能得到最好的回报

${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>应用&lt;c:forEach&gt;列举10以内全部奇数</title>
</head>
<body>
<b>10以内的全部奇数为:</b>
<c:forEach var="i" begin="1" end="10" step="2">
    ${i}&nbsp;&nbsp;
</c:forEach>
</body>
</html>
10以内的全部奇数为: 1   3   5   7   9   
示例4

这里写图片描述

<td style="padding:5px;">&nbsp;${BorrowForm.bookBarcode}></td>
.
.
<%@ 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;">&nbsp;${BorrowForm.bookBarcode}></td>
                            <td style="padding:5px;">${BorrowForm.bookName}</td>
                            <td style="padding:5px;">${BorrowForm.bookType}</td>
                            <td align="center">&nbsp;${BorrowForm.bookcaseName}</td>
                            <td align="center">&nbsp;${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>

<: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>
google
你好啊冒号
runoob
taobao
分号

delims=", : ;" 里可以指定一个或多个分隔符,如 delims=", "

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值