JavaWeb(JSTL標籤庫學習筆記)

一、 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,類似於switchcase

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>




發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章