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


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


核心标签库

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

<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
标签      描述
     用于在JSP中显示数据,就像<%= ... >
     用于保存数据
  用于删除数据
   用来处理产生错误的异常状况,并且将错误信息储存起来
if>  与我们在一般程序中用的if一样
  本身只当做的父标签
    的子标签,用来判断条件是否成立
   的子标签,接在标签后,当标签判断为false时被执行
  检索一个绝对或相对 URL,然后将其内容暴露给页面
     基础迭代标签,接受多种集合类型
   根据指定的分隔符来分隔内容并迭代输出
   用来给包含或重定向的页面传递参数
    重定向至一个新的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" %>

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title heretitle>
head>
<body>
    
    <c:out value="水平线标记
"
escapeXml="true">
c:out><br> <c:out value="水平线标记
"
escapeXml="false">
c:out> <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} "/> body> html>

条件判断标签

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

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

循环标签

JSTL 标签库中包含两个循环。

<:forEach>循环标签

<:forEach>循环标签可以根据循环条件,遍历数组和集合类的所有或部分数据。

这些标签封装了Java中的for,while,do-while循环。
相比而言,标签是更加通用的标签,因为它迭代一个集合中的对象。
标签通过指定分隔符将字符串分隔为一个数组然后迭代它们。

<c:forEach items=""
    [begin=""]
    [end=""]
    [step=""]
    [var=""]
    [varStatus=""]>
   标签体
 c:forEach> 
  

标签有如下属性:

属性 描述 是否必要 默认值
items 要被循环的信息,多用于数组和集合类,可以通过EL指定
begin 开始的元素(0=第一个元素,1=第二个元素) 0
end 最后一个元素(0=第一个元素,1=第二个元素) Last element
step 每一次迭代的步长 1
var 代表当前条目的变量名称
varStatus 指定循环状态的变量名称,有4个状态属性

变量 类型 描述
index int 当前循环的索引值,从0开始
count int 当前循环的循环计数,从1开始
first boolean 是否为第一次循环
last boolean 是否为最后一次循环

示例1

<%@ 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>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title heretitle>
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"%>

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

${id.index}
循环中,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"%>

<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>
10以内的全部奇数为: 1   3   5   7   9   

示例4

JSTL 标签库<c:if> <:forEach> <:forTokens>_第1张图片

<td style="padding:5px;"> ${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);
%>

.
.
<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>

<: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=", "

你可能感兴趣的:(jstl)