XML - 資料交換管理/JSTL
| 上一章 | 下一章 |
| ← RPC | RDF - 資源描述框架 → |
JavaServer Pages 標準標籤庫(簡稱:JSTL)是四個自定義標籤庫的集合,擴充套件了 JSP 規範。作為元件,它被分配到 Java EE Web 應用程式開發平臺中。JSTL 在 Java 社群程序 (JCP) 052 的環境中進行管理。在 Jakarta-Project 中,這些規範有參考實現。
在 1.1 版本中,以下庫是預期的
- core:迭代、條件、URL 特定和一般標籤
- xml:來自 XML 領域和 XML 轉換的標籤
- sql:用於直接資料庫管理的標籤
- i18n:用於格式化和國際化的標籤
在其最初的 1.0 版本中,與 1.1 版本相比,一個“表示式語言”是預期的。隨著 JSP 2.0,JSP-EL 被納入 JSP 規範本身。因此,JSTL 1.1 的主要目標是使庫適應 JSP 2.0 的 JSP-EL。隨著 1.2 版本的庫,JSTL 在 JSP 2.1 和 JSF-1.2 規範的表示式語言統一方面是最新的。此外,1.2 版本的 JSTL 是 Java-EE-5 平臺的一部分。
至於 JSTL 1.1 的使用,需要 JSP-EL,一個 servlet 容器必須至少符合 JSP 2.0 規範才能使用它。參考實現由兩個 JAR 歸檔檔案“standard.jar”和“jstl.jar”組成。在大多數容器中,它們通常只需要位於 Web 應用程式的 lib 路徑中。為了確保向後相容性,JSTL 1.1 由 URI "http://java.sun.com/jsp/jstl/fmt“ 引用,而 JSTL 1.0 使用 "http://java.sun.com/jstl/fmt“。
XML 表示法 (JSPX) 中的示例 JSP 頁面
<?xml version="1.0" encoding="utf-8" ?>
<jsp:root
xmlns:jsp="http://java.sun.com/JSP/Page"
xmlns:c="http://java.sun.com/jsp/jstl/core"
xmlns:fmt="http://java.sun.com/jsp/jstl/fmt"
version="2.0">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
<head>
<title>JSTL 1.1</title>
</head>
<body>
<h1>Iteration</h1>
<ul>
<c:forEach var="num" begin="1" end="10">
<li>Number<c:out value="${num}"/></li>
</c:forEach>
</ul>
<h1>Formatting</h1>
<p>
Currency: <fmt:formatNumber value="10000" type="currency" currencyCode="EUR" />
</p>
</body>
</html>
</jsp:root>
程式碼說明
在 jsp:root 元素中,指明瞭使用來自 JSTL 的基礎和 I18N 標籤庫(core 和 fmt),並連結到相應的 XML 名稱空間。在 Iteration 標題下,使用來自 core 庫的 forEach-Tag:它顯示標籤體(即標籤的內容)十次。在這個迴圈中,使用 ${num} 可以找到 JSP 表示式。在每次迴圈週期中,這裡都會顯示來自 num 的當前資料。在 Formatting 標題下,使用來自 JSTL fmt 庫的 formatNumber 標籤。根據調整的語言(例如,可以透過 fmt:setLocale 設定),數字 10000 將被格式化(例如,在德語中為“EUR 10.000,00”,在英語中為“EUR 10,000.00”)。
Struts 與 JSTL:實際上,在許多情況下,Struts 標籤和 JSTL 標籤將執行等效的功能。與 Struts 框架不同,JSTL 不連結到特定架構正規化,例如 模型-檢視-控制器 分離。與 struts 標籤相比,JSTL 標籤功能更強大,因為 JSTL 是 J2EE 規範的更標準部分,同時還有許多選項可用,例如條件檢查、比較字串、去除空格、轉換為大寫或小寫等。兩個庫都擁有名稱相同的標籤。因此,如果這些庫在應用程式中混合使用,這是可能的,則需要注意使用唯一的字首(JSP)或名稱空間(JSPX)。