一、 JSTL標籤庫
1.1、什麼是JSTL
Java Standard Tag Library Java標準標籤庫,一組由Sun公司已經製作好的擴充標籤庫,可以在JSP頁面直接使用。每個標籤都有它自己的功能。可以替換JSP頁面上的Java代碼。
1.2、JSTL標籤庫分類:
|
JSTL |
首碼 |
URI |
作用 |
|
核心標籤庫 |
c |
http://java.sun.com/jsp/jstl/core |
一組常用的核心標籤庫 |
|
國際化標籤 |
fmt |
http://java.sun.com/jsp/jstl/fmt |
用於頁面的國際化,在不同的國家顯示不同的語言 |
|
資料庫標籤 |
sql |
http://java.sun.com/jsp/jstl/sql |
可以直接在JSP頁面上使用標籤訪問資料庫 |
|
XML標籤 |
x |
http://java.sun.com/jsp/jstl/xml |
用於在JSP上解析XML |
|
函數標籤 |
fn |
http://java.sun.com/jsp/jstl/functions |
在頁面上使用一組字串的函數 |
1.3、 JSTL 使用步驟
1.3.1. 導包jstl.jar庫
1.3.2. 在JSP頁面上使用taglib指令
<%@taglib prefix=”c” uri=” http://java.sun.com/jsp/jstl/core” %>
1.3.3. 使用標籤庫
二、 判斷標籤<c:if> 2.1作用
|
屬性名稱 |
是否支援EL |
屬性類型 |
屬 性 描 述 |
|
test |
true |
boolean |
用來判斷運算式是否為真,如果為真,則執行if標籤內的代碼 |
|
var |
false |
String |
將上面的test的運算結果存在這個變數名中 |
|
scope |
false |
String |
將上面的test的運算結果放在哪個域中 |
2.2樣本:在LoginServlet中的會話添加一個使用者資訊,重新導向到login.jsp頁面,在login.jsp使用<c:if>進行判斷。如果目前使用者已經登入,則顯示"歡迎您。Xxx登入成功。",否則顯示一個登入的連結。
2.3代碼
<!-- 判斷會話域中是否有user對象,如果沒有,則跳轉到login.jsp --> <c:if test="${empty sessionScope.user }" > <!-- 重新導向 --> <c:redirect url="/login.jsp"/> </c:if> 歡迎您。${sessionScope.user}
三、多分支標籤 3.1作用
|
標籤名 |
作用 |
|
choose |
判斷標籤的父標籤 |
|
when |
多分支的判斷條件,屬性:test,類似於switch中case |
|
otherwise |
類似於switch中的default |
四、遍曆標籤<c:forEach>
4.1作用:
|
屬性名稱 |
是否支援EL |
屬性類型 |
屬 性 描 述 |
|
var |
false |
String |
指定遍曆中每個元素的變數名 |
|
varStatus |
false |
String |
每次迴圈對象的狀態,有4個屬性 |
|
items |
true |
任何支援的類型 |
要遍曆的集合或數組 |
|
begin |
true |
int |
從哪一行開始 |
|
end |
true |
int |
到哪一行結束 |
|
step |
true |
int |
步長,每次跨幾條記錄 |
4.2 varStatuus屬性
|
屬性 |
類型 |
含義 |
|
index |
int |
當前是第幾個元素,從0開始 |
|
count |
int |
到當前這一行一共有多少個元素了 |
|
first |
boolean |
如果當前是第一個元素,則返回true |
|
last |
boolean |
如果當前是最後一個元素,則返回true |
4.3遍曆集合
<table border="1" width="600" align="center"> <caption>學生列表</caption> <tr> <th>編號</th> <th>姓名</th> <th>年齡</th> <th>性別</th> </tr> <!-- 每一行是一條記錄 items: 要遍曆的集合或數組 var: 集合或數組中的每個元素 varStatus: 當前元素狀態 ● index: 當前是第幾個元素,從0開始 ● count: 到當前這一行一共有多少個元素了 ● first: 如果當前是第一個元素,則返回true ● last: 如果當前是最後一個元素,則返回true begin: 從哪一行開始,從0開始 end: 到哪一行結束 step: 步長,跨幾步 --> <c:forEach items="${requestScope.students}" var="stu" varStatus="row" > <!-- 三元運算,如果為0,則輸出style這句話,否則什麼也不輸出 --> <tr ${row.count % 2 == 0 ? "style='background-color: lightgreen'":""}> <td>${row.count}</td> <td>${stu.name}</td> <td>${stu.age}</td> <!-- 字串可以用單引號或雙引號 --> <td>${stu.male?"男":"女"}</td> </tr> </c:forEach> </table>
4.4遍曆數組
資料放在範圍中,如果不放在範圍中可以使用JSP運算式
遍曆數組: <% int [] arr = {44,12,5,1,2,3}; pageContext.setAttribute("arr", arr); %> <br/> <c:forEach items="${arr}" var="num"> ${num} <br/> </c:forEach>
4.5 遍曆Map:
<%/建立一個Map HashMap<String, String> map = new HashMap<String, String>(); map.put("n1", "潘金蓮"); map.put("n2", "小喬"); map.put("n3", "孫悟空"); //放在請求域中 request.setAttribute("map", map);%><hr/> 遍曆Map <br/> <c:forEach items="${map}" var="entry"> ${entry.key } -> ${entry.value} <br/> </c:forEach>
4.6類似於Java中for迴圈的用法
<hr/> 從1到100 <br/> <c:forEach begin="1" end="100" var="i" step="2"> ${i} <br/> </c:forEach>