標籤庫簡介

開放

7.1 c:if, c:forEach

每個人都喜歡使用標籤而不是 Java 代碼的代碼,因此他們決定擴大範圍。但編程並不局限於創建對象和讀取它們的屬性。您需要調用對象的方法,使用數據庫和其他服務。該怎麼辦?

您只需要將每個 Java 語句表示為一個標記。是if,將是<if>,是for,將是,<for>等等。好吧好吧,開玩笑,不是那樣的。嗯,不可能是人們真的決定這樣做。但不,也許吧!

程序員允許在代碼中添加任何標籤。原則上,沒有什麼可擔心的——JSP 是一個可擴展的標準。但他們走得更遠,發布了 JSP 標準標籤庫 - JSTL。帶有它的頁面如下所示:

<%@ taglib uri = "http://java.sun.com/jsp/jstl/core" prefix = "c" %>

<html>
   <head>
       <title> JSTL Example</title>
   </head>

   <body>
        <c:set var = "salary" scope = "session" value = "${2000*5}"/>
        <c:if test = "${ salary > 2000}">
            <p>My salary is: <c:out value = "${salary}"/><p>
        </c:if>
   </body>
</html>

你在以後的項目中很可能會遇到這樣的代碼,我會給出一些解釋。

7.2 JSTL函數

JSTL 函數分為 5 類:

  • 主要標籤;
  • 格式化標籤;
  • SQL 標籤;
  • XML標籤;
  • 調用函數。

我不會列出所有的,但我會列出最受歡迎的。讓我們從主要標籤開始:

1個 <c:out> 輸出指定的表達式 - 相當於 <%= %>
2個 <c:set> 將表達式的結果寫入變量
3個 <c:remove> 刪除變量
4個 <c:catch> 捕獲異常
5個 <c:if> if 的類比
6個 <c:choose> 模擬開關
7 <c:when> 與 choose 一起使用
8個 <c:otherwise> 與 choose 一起使用
9 <c:import> 允許您在代碼中包含內容(相當於導入指令)
10 <c:forEach> 對於每個循環
十一 <c:param> 允許您設置導入選項
12 <c:redirect> 重定向
13 <c:url> 創建帶參數的 URL

我將僅舉一個例子並以此結束。原則上,經過一定的技巧是完全有可能閱讀這樣的代碼的。但是不推薦寫。

<%@ taglib uri = "http://java.sun.com/jsp/jstl/core" prefix = "c" %>

<html>
   <head>
      <title> Each Tag Example&</title>
   </head>

   <body>
       <c:forEach var = "i" begin = "1" end = "5">
            Item <c:out value = "${i}"/><p>
       </c:forEach>
   </body>
</html>

想一想,我們把Java代碼寫成標籤的形式,然後JSP解析器就會把這些標籤轉成Java代碼。這個世界上有什麼地方出了問題。

順便說一句,您可以編寫自己的標籤庫。我什至曾經在他們所在的項目中工作過。很棒的體驗。只要對庫進行任何更改,整個 jsp 就會立即中斷。

你想要什麼?編譯器不會跟踪此類更改。只有在查看生成的 HTML 頁面時才能直觀地找到它們。如果這些是在非平凡情況下出現的一些罕見場景……上帝保佑後端開發和靜態類型!

留言
  • 受歡迎
你必須登入才能留言
此頁面尚無留言