一. JSTL標籤
1. 簡介
JSTL(全名:java standard tag libarary - java標準標籤庫);
2. 五套標籤庫(重點是前三套)
(1) 核心標籤庫 (c標籤庫)
(2) 國際化標籤(fmt標籤庫)
(3) EL函數庫(fn函數庫)
(4) xml標籤庫(x標籤庫)
(5) sql標籤庫(sql標籤庫)
3. 使用JSTL標籤步驟
(1) 導入jstl支持的jar包(標籤背後隱藏的java代碼)
注意:使用javaee5.0的項目自動導入jstl支持jar包
(2) 使用taglib指令導入標籤庫
<%@taglib uri="核心標籤庫的tld文件的uri名稱" prefix="標籤庫的簡寫或者前綴" %>
注意:每一個核心標籤庫都有一個tld文件,tld文件在這個jar包的META-INF中,tld文件就是聲明標籤用的,在
文件中找到uri複製粘貼即可。使用這個uri就可以定位到這個標籤庫。前綴也是在這個文件中去找,在這個文件中
有一個<short-name></short-name>標籤,中間的值就是簡寫。
(3) 在jsp中使用標籤
二. 核心標籤庫的重點標籤
1. 保存數據:<c:set></c:set>
(1) <c:set>標籤用於把某一個對象存在指定的域範圍內,或者設置Web域中的java.util.Map類型的屬性對象或
JavaBean類型的屬性對象的屬性。
(2) 標籤屬性
(3) 實例
<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<%--導入標籤庫 --%>
<%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>核心標籤庫</title>
</head>
<body>
<%--使用標籤 --%>
<%--set標籤 :保存數據(保存到域中)默認保存到page域 --%>
<c:set var="name" value="rose" scope="request"></c:set>
${requestScope.name}
</body>
</html>
運行結果如下圖所示:
2. 獲取數據:<c:out value=""></c:out>
(1) <c:out> 標籤用於輸出一段文本到瀏覽器中。
(2) 標籤屬性
(3) 實例
3. 單條件判斷<c:if test=""></c:if>
(1) <c:if test=“”>標籤可以構造簡單的“if-then”結構的條件表達式。
(2) 標籤屬性
(3) 實例
<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<%--導入標籤庫 --%>
<%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>核心標籤庫</title>
</head>
<body>
<%
String msg = null;
pageContext.setAttribute("msg",msg);
%>
<%--if標籤 :單條件判斷,test返回的是布爾值,如果返回值爲true,標籤體的內容就會輸出--%>
<%--
<c:if test="true">
條件成立
</c:if>
--%>
<c:if test="${!empty msg}">
條件成立
</c:if>
</body>
</html>
4. 多條件判斷<c:choose></c:choose>
(1) <c:choose>標籤用於指定多個條件選擇的組合邊界,它必須與<c:when>和<c:otherwise>標籤一起使用。
使用<c:choose>,<c:when>和<c:otherwise>三個標籤,可以構造類似 “if-else if-else” 的複雜條件判斷結
構。
(2) 實例
<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<%--導入標籤庫 --%>
<%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>核心標籤庫</title>
</head>
<body>
<%--choose標籤+when標籤+otherwirse標籤: 多條件判斷 --%>
<c:set var="score" value="56"></c:set>
<c:choose>
<c:when test="${score>=90 && score<=100}">
優秀
</c:when>
<c:when test="${score>=80 && score<90}">
良好
</c:when>
<c:when test="${score>=70 && score<80}">
一般
</c:when>
<c:when test="${score>=60 && score<70}">
及格
</c:when>
<c:otherwise>
不及格
</c:otherwise>
</c:choose>
</body>
</html>
運行結果如下圖所示:
5. 循環數據<c:forEach></c:forEach>
(1) <c:forEach>標籤用於對一個集合對象中的元素進行循環迭代操作,或者按指定的次數重複迭代執行標籤體中
的內容。
(2) 標籤屬性
(3) 實例
<%@ page language="java" import="java.util.*,zw_entity.*" pageEncoding="utf-8"%>
<%--導入標籤庫 --%>
<%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>核心標籤庫</title>
</head>
<body>
<%-- forEach標籤:循環 --%>
<%
//List
List<Student> list = new ArrayList<Student>();
list.add(new Student("rose",18));
list.add(new Student("jack",28));
list.add(new Student("lucy",38));
//放入域中
pageContext.setAttribute("list",list);
//Map
Map<String,Student> map = new HashMap<String,Student>();
map.put("100",new Student("mark",20));
map.put("101",new Student("maxwell",30));
map.put("102",new Student("narci",40));
//放入域中
pageContext.setAttribute("map",map);
%>
<hr/>
<%--
begin="" : 從哪個元素開始遍歷,默認從0開始
end="": 到哪個元素結束。默認到最後一個元素
step="" : 步長 (每次加幾) ,默認1
items="": 需要遍歷的數據(集合)
var="": 每個元素的名稱 ,需要使用名稱去訪問它,相當於起別名。
varStatus="": 當前正在遍歷元素的狀態對象。(count屬性:當前位置,從1開始)
--%>
<c:forEach items="${list}" var="student" varStatus="varSta">
序號:${varSta.count} - 姓名:${student.name } - 年齡:${student.age}<br/>
</c:forEach>
<hr/>
<c:forEach items="${map}" var="entry">
${entry.key } - 姓名: ${entry.value.name } - 年齡:${entry.value.age }<br/>
</c:forEach>
</body>
</html>
運行結果如下圖所示:
6. 循環特殊字符串<c:forTokens items="" delims=""></c:forTokens>
(1) 對帶有相同符合格式內容進行分割輸出,例如varstr="1,2,3,4,5,6";
(2) 標籤屬性
(3) 實例
<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<%--導入標籤庫 --%>
<%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>核心標籤庫</title>
</head>
<body>
<%-- forToken標籤: 循環特殊字符串 --%>
<%
String str = "java-php-net-平面";
pageContext.setAttribute("str",str);
%>
<c:forTokens items="${str}" delims="-" var="s">
${s }<br/>
</c:forTokens>
</body>
</html>
運行結果如下圖所示:
7. 重定向<c:redirect></c:redirect>
(1) <c:redirect>標籤用於將當前的訪問請求轉發或重定向到其他資源,它可以根據url屬性所指定的地址,執行
類似<jsp:forward>這個JSP標準標籤的功能,將訪問請求轉發到其他資源;或執行response.sendRedirect()方
法的功能,將訪問請求重定向到其他資源。
(2) 標籤屬性
(3) 實例
<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<%--導入標籤庫 --%>
<%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>核心標籤庫</title>
</head>
<body>
<%--redirect:重定向,重定向可以指向任何地址--%>
<c:redirect url="http://www.baidu.com"></c:redirect>
</body>
</html>