示例應用程序
為了演示 JSTL 標記,我們將使用來自一個工作應用程序的示例,本系列中余下的文章都將使用此應用程序。由于基于 java 的 Weblog 日漸流行及為人們所熟悉,因此我們將出于此目的使用一個簡單的基于 Java 的 Weblog;參閱參考資料以下載該應用程序的 jsp 頁面和源代碼。Weblog(也稱為 blog)是一種基于 Web 的簡短注釋的日志,這些注釋是有關 Weblog 的作者所感愛好的主題,通常帶有與 Web 上其它地方的相關文章及討論的鏈接。圖 1 中顯示了該應用程序正在運行時的抓屏。
雖然完整的實現需要二十四個 Java 類,但在表示層中卻只涉及 Weblog 應用程序中的兩個類,Entry 和 UserBean。這樣,對于理解 JSTL 示例而言,只有這兩個類比較重要。圖 2 顯示了 Entry 和 UserBean 的類圖。
Entry 類表示 Weblog 中一個標有日期的項。其 id 屬性用于在數據庫中存儲及檢索該項,而 title 和 text 屬性則表示該項的實際內容。created 和 lastModified 屬性引用了 Java 語言中 Date 類的兩個實例,分別用來表示最初創建該項的時間和最后編輯該項的時間。author 屬性引用了標識該項的創建者的 UserBean 實例。
UserBean 類存儲了有關應用程序的已認證用戶的信息,如用戶名、全名和電子郵件地址。該類還包含一個用于與相關數據庫進行交互的 id 屬性。其最后一個屬性 roles 引用一列 String 值,這列值標識與相應用戶相關的、特定于應用程序的角色。對于 Weblog 應用程序,相關的角色是“User”(所有應用程序用戶常用的缺省角色)和“Author”(該角色指定可以創建和編輯 Weblog 項的用戶)。
流控制
由于可以用 EL 替代 JSP 表達式來指定動態屬性值,因此頁面創作人員無需使用腳本編制元素。因為腳本編制元素可能是引起 JSP 頁面中維護問題的主要原因,所以 JSTL 的主要優點就在于提供了這樣簡單(且標準)的替代方法。
EL 從 JSP 容器檢索數據,遍歷對象層次結構,然后對結果執行簡單的操作。不過,除了訪問和操作數據之外,JSP 腳本編制元素的另一個常見用法是流控制。尤其是,頁面創作人員常借助 scriptlet 來實現迭代或條件內容。然而,因為這樣的操作超出了 EL 的能力,所以 core 庫提供了幾個定制操作來治理流控制,其形式有迭代、條件化和異常處理。
迭代
在 Web 應用程序環境中,迭代主要用于訪存和顯示數據集,通常是以列表或表中的一系列行的形式顯示。實現迭代內容的主要 JSTL 操作是 進行整數范圍迭代用到了清單 1 中所示的 清單 1. 通過 body content 當出現 step 時,它也必須是整數值。它指定每次迭代后索引的增量。這樣,迭代索引從 begin 屬性的值開始,以 step 屬性的值為增量進行遞增,在迭代索引超過 end 屬性的值時停止迭代。注:假如省略了 step 屬性,那么步長缺省為 1。 假如指定了 var 屬性,那么將會創建一個帶有指定名稱的并限定了作用域的變量,并將每次迭代的當前索引值賦給該變量。這一限定了作用域的變量具有嵌套式可視性 — 只可以在
新聞熱點
疑難解答