EL ( Expression Language )
JSP 表達式語言(EL)使得它可以很容易地訪問存儲在 JavaBeans 組件的應用程序的數據。
JSP EL中,可以創建兩個表達式(A)算術和(B)邏輯。
最簡單的方式
a.jsp 設定
application.setAttribute("myName",tzutzu);
b.jsp 拿到
${myName};
EL提供 .
和 [ ]
兩種運算符來訪問數據。下面兩種所代表的意思是一樣的:
${sessionScope.user.name}
${sessionScope.user["name"]}
application 物件
在一個 web 應用程式中(通常一個資料夾就是一個應用程式)會產生一個 application 物件,這個應用程式有許多的 jsp 網頁,這些 jsp 網頁都會存取同一個 application 物件,即使使用者不是同一個,也會存取相同的 application 物件,因此, application 物件可以跨網頁分享資料,也可以跨不同連線(不同的人)分享資料。
參考文章 : [JSP]application物件
文章參考 : 【jsp、servlet】比較page、request、session、application的使用範圍
JSTL ( JavaServer Pages Standard Tag Library )
JSTL 和 EL 用來取代傳統直接在頁面上嵌入 Java 程序的做法。
JSTL 標籤庫的使用是為彌補 html 標籤的不足,規範自定義標籤的使用而誕生的。使用 JSLT 標籤的目的就是不希望在 jsp 頁面中出現 java 邏輯程式碼
JSTL 所提供的標籤函數庫主要分為五大類:
- 核心標籤庫
- I18N格式標籤庫
- SQL標籤庫
- XML標籤庫
- 函數標籤庫
用比較多就是 核心標籤庫
偶爾用 I18N格式標籤庫
,其他不太常用到,每一個標籤庫會有自己的 url ,像是 核心標籤庫
要使用 http://java.sun.com/jsp/jstl/core
,在 jsp 裡面要用到就在最前面加 <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
,其實電商專案也只有用到 核心標籤庫
,核心標籤庫內容有時間再補充好了(但通常就是不知道何時才會把筆記補齊= =),寫一下電商專案用到的 if 和 forEach 兩個來舉例就好
<c:if>
語法:
<c:if test="testCondition" [var="varName"] [scope="{page|request|session|application}"]>
</c:if>
- test:是測試表達式
- var:用来保存 test 表達式的结果
- scope:var 變量的訪問
<c:forEach>
語法:
<c:forEach var="row" items="${cart}">
<div class="row order_list">
<div class="col-5 center-vertical justify-content-start">
<img class="order_goods_img" src="img/${row.goodsimg}"/>
<p class="order_goods_name">${row.goodsname}</p>
</div>
<div class="col center-vertical">
<span id="price_${row.goodsid}">${row.price}</span>
</div>
</div>
</c:forEach>
${cart} 是電商專案裡把點選的商品都存在 cart 裡
List<Map<String, Object>> cart = (List<Map<String, Object>>) request.getSession().getAttribute("cart");
- var : 從集合中獲取的元素變量
- items : 集合對象
- varStatus 獲得元素的狀態,有 count、 index、 first 和 last 等属性
- begin:開始位置,默認為 0
- end:結束位置,默認最後一個元素
- step:步長