JSTL核心標簽庫之簡單介紹

定義

      JSTL(JSP Standard Tag Library,JSP標準標簽庫)是一個不斷完善的開源的JSP標簽庫,是一個實現Web應用程序中常見的通用功能的定制標記庫集,這些功能包括迭代和條件判斷、數據管理格式化、XML操作以及數據庫訪問。

 

優點

      JSTL標簽庫的使用,是為瞭彌補HTML表的不足,規范自定義標簽的使用而誕生的。在進入瞭Model2 的時代,人們開始註重軟件的分層設計,不希望在Jsp頁面中出現Java邏輯代碼,同時也由於自定義標簽的開發難度較大和不利於技術標準化產生自定義標簽庫。

 

分類

      JSTL標簽庫可分為5類:核心標簽庫、I18N格式化標簽庫、SQL標簽庫、XML標簽庫、函數標簽庫。這裡,我們隻討論核心標簽庫,其他的就不做討論瞭。

 

核心標簽庫

      JSTL的核心標簽庫標簽共13個,從功能上可以分為4類:表達式控制標簽、流程控制標簽、循環標簽、URL操作標簽。使用這些標簽能夠完成JSP頁面的基本功能,減少編碼工作。

(1)表達式控制標簽:out標簽、set標簽、remove標簽、catch標簽

(2)流程控制標簽:if標簽、choose標簽、when標簽、otherwise標簽

(3)循環控制標簽:forEach標簽、forTokens標簽

(4)URL操作標簽:import標簽、url標簽、redirect標簽

在JSP頁面引入核心標簽庫的代碼為:

[html 

<span style="font-family:Microsoft YaHei;font-size:18px;"><%@ taglib prefix="c" uri="https://java.sun.com/jsp/jstl/core" %></span>  

 

EL語言介紹

       EL語言是JSTL輸出(輸入)一個Java表達式的表達形式,在JSTL中,EL語言隻能在屬性值中使用。EL語言隻能通過建立表達式${exp1 }來進行調用。在屬性值中使用表達式有三種方式。

1. value屬性包含一個表達式

       在這種情況下,表達式值被計算出來並根據類型轉換規則賦值給value屬性。比如:表達式${username}就是一個EL,它相當於JSP語句<%=request.getAttribute("username") %>或<%=session.getAttribute("username") %>。

2. value屬性包含一個或多個屬性,這些屬性被文本分割或圍繞

       在這種情況下,表達式從左到右進行計算,並將結果轉換為字符串型(根據類型轉換規則),並將結果賦值為value屬性。

3. value屬性僅僅包含文本

       在這種情況下,字符串型屬性value將根據類型轉換規則轉換為標簽所希望的類別。

 

EL語言操作符

取得某個對象或集合中的屬性,為瞭獲得集合中的屬性,EL支持以下兩種操作:

    1. 使用.操作符來獲得有名字的屬性,如:表達式${user.username }表明對象user的username屬性

    2. 使用[]操作符來獲得有名字或按數字排列的屬性

 

表達式控制標簽

1. <c:out>標簽

【功能】:用於顯示數據對象(字符串、表達式)的內容或結果,它有如下屬性:

 

[html]  

<span style="font-family:Microsoft YaHei;font-size:18px;">在使用Java腳本輸出時常使用的方式為:  

  

<% out.println(“字符串”)%>  

  

<%=表達式%>  

  

在web開發中,為瞭避免暴露邏輯代碼會盡量減少頁面中的Java腳本,使用<c:out>標簽就可以實現以上功能。  

  

<c:out value=”字符串”>  

  

<c:out value=”EL表達式”></span>  

 

提示:JSTL的使用是和EL表達式分不開的,EL表達式雖然可以直接將結果返回給頁面,但有時得到的結果為空,<c:out>有特定的結果處理功能,EL的單獨使用會降低程序的易讀性,建議把EL的結果輸入放入<c:out>標簽中。

 

2. <c:set>標簽

【功能】:主要用於將變量存取域JSP范圍中或JavaBean屬性中,它有如下屬性:

 

如果指定瞭target屬性,那麼property屬性也必須指定。

 

3. <c:remove>標簽

【功能】:主要用來從指定的JSP范圍內移除指定的變量,它有如下屬性:

 

[html]  

<span style="font-family:Microsoft YaHei;font-size:18px;">從session中刪除city變量:  

  

<c:remove var="city" scope="request"/></span>  

 

4. <c:catch>標簽

【功能】:用來處理JSP頁面中產生的異常,並將異常信息存儲

【語法】:

[html]  

<span style="font-family:Microsoft YaHei;font-size:18px;"><c:catch var=”name1”>  

  

容易產生異常的代碼  

  

</c:catch></span>  

【參數說明】:

var表示由用戶定義存取異常信息的變量的名稱。省略後也可以實現異常的捕獲,但就不能顯示的輸出異常信息。

 

流程控制標簽

流程控制標簽主要用於對頁面簡單業務邏輯進行控制。

1. <c:if>標簽

【功能】:同程序中的if作用相同,用來實現條件控制,它有如下屬性:

 

【使用場景】:在開發中經常會出現不同用戶的權限,首先對用戶名進行判斷(包括進行數據庫驗證,該功能可以由JavaBean實現,使用EL表達式得到一個佈爾型的結果),把判斷的結果存放在不同的JSP范圍內(比如常用的session內),這樣在每個頁面都可以得到該用戶的權限信息,根據不同權限的用戶顯示不同的結果。

 

2. <c:choose>、<c:when>和<c:otherwise>標簽

這3個標簽通常情況下是一起使用的,<c:choose>標簽作為<c:when>和<c:otherwise>標簽的父標簽來使用。

【語法】:

[html]  

<span style="font-family:Microsoft YaHei;font-size:18px;"><c:choose>  

  

         <c:when>  

  

…..//業務邏輯1  

  

         <c:otherwise>  

  

…..//業務邏輯2  

  

         <c:otherwise>  

  

….//業務邏輯3  

  

</c:choose></span>  

【參數說明】:

3個標簽的嵌套使用方式,<c:choose>標簽隻能和<c:when>標簽共同使用。

 

結束語

      這次關於JSTL的討論就先寫到這裡,循環控制標簽和URL操作標簽將會在下面一篇文章中繼續討論,請大傢耐心期待,同時,文章中有錯誤之處,還請各位大神批評指正。

發佈留言