港岛妹妹,你献给我的西班牙馅饼
甜蜜地融化了我
港岛妹妹,我们曾拥有的甜蜜的爱情
疯狂地撕裂了我
核心标签是最常用的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 | 是否为最后一次循环 |
<%@ 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
<%@ 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 属性指定的变量,只在循环体中有效。
<%@ 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
<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=", "