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 頁面時才能直觀地找到它們。如果這些是在非平凡情況下出現的一些罕見場景……上帝保佑後端開發和靜態類型!