[ JSP ] EL 和 JSTL


Posted by tzutzu858 on 2020-10-12

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 所提供的標籤函數庫主要分為五大類:

  1. 核心標籤庫
  2. I18N格式標籤庫
  3. SQL標籤庫
  4. XML標籤庫
  5. 函數標籤庫

用比較多就是 核心標籤庫 偶爾用 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:步長









Related Posts

[Py 百日馬 Day 1] Hello World

[Py 百日馬 Day 1] Hello World

[Release Notes] 20200930_v1 - Add navbar search bar

[Release Notes] 20200930_v1 - Add navbar search bar

C++ 讀寫檔案練習

C++ 讀寫檔案練習


Comments