1. 程式人生 > 實用技巧 >JSP: EL表示式和JSTL標籤庫

JSP: EL表示式和JSTL標籤庫

EL表示式

概念:expression language表示式語言

作用:替換和簡化jsp頁面中java程式碼的編寫

語法:${ 表示式 }

注意:jsp自動直接EL表示式。如果需要忽略:

  • 忽略所有:加入指令<%@ page isELIgnored="true" %>
  • 忽略一個:加一個轉義字元,\${ ... }

使用:運算、取值。

運算

運算子:(比Java多幾個,可以幾個字母表示)

  1. 算數運算子:+ - * / % div mod
  2. 比較運算子:> < >= <= == !=
  3. 邏輯運算子:&& || ! and or not
  4. 空運算子:empty (用於判斷字串、集合、陣列是否為null,長度是否為0)

empty例子

${empty str}

取值

EL表示式只能從域物件中獲取值

語法:

  1. ${域名.鍵名}:從指定域中獲取指定鍵的值
  2. 簡化寫法${鍵名}:表示依次從最小的域中找鍵名
  3. list集合寫法:${域名.集合名[索引]}
  4. map集合寫法:${域名.集合名.key名}

域名:一共四個

  1. pageScope 對應pageContent型別
  2. requestScope 對應request型別
  3. sessionScope 對應session型別
  4. applicationScope 對應application(Servletcontext)型別

一般屬性值

<%
	request.setAttribute("name", "Tom");
%>

${requestScope.name}

獲取物件中的值

本質上呼叫JavaBean中的getter方法而來,只要有getXxx()方法,就可以獲得obj.xxx值。

<%
  User user = new User("張三", 18, new Date());
  request.setAttribute("u", user);
%>

${requestScope.u.name} <br>
${u.name} <br>
${u.birthday} <br>

獲取List集合中的值

<%
  List list = new ArrayList();
  list.add("aaa");
  list.add("bbb");
  request.setAttribute("list", list);
%>

${requestScope.list} <br>
${requestScope.list[0]}

隱式物件

EL表示式中有11個隱式物件

  1. pageContext
    • 獲取其它8個隱式物件,如${pageContext.request.contextPath} (動態獲取虛擬目錄)

JSTL標籤庫

概念:JavaServer Pages Tag Library, JSP標準標籤庫

  • 是Apache組織提供的開源的免費的jsp標籤

作用:用於簡化和替換jsp頁面上的java程式碼

使用步驟:

  1. 匯入jstl相關的jar包
  2. 引入標籤庫<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
  3. 使用標籤

常用的JSTL標籤:

  1. if 相當於java中的if語句
  2. choose 相當於java中的switch語句
  3. foreach 相當於java中的for語句

if標籤

test屬性:接受布林表示式

<c:if test="true">
 <h1> 如果是真,顯示當前內容 </h1>
</c:if>

choose標籤

<%
  request.setAttribute("number", 13);
%>
<c:choose>
  <c:when test="${number == 6}">週六</c:when>
  <c:when test="${number == 7}">週日</c:when>
  <c:otherwise>不是星期天</c:otherwise>}
</c:choose>

foreach標籤

第一種用法

<c:forEach begin="1" end="10" var="i" step="1" varStatus="s">
  ${i} ${s.index} ${s.count} <br>
</c:forEach>

其中 varStatus可以不用,varStatus表示迴圈狀態

s.index表示容器中元素的索引,從0開始

s.count表示迴圈次數

第二種用法:遍歷容器

<%
  List list = new ArrayList();
  list.add("aaa");
  list.add("bbb");
  request.setAttribute("list", list);
%>
<c:forEach items="${list}" var="str">
  ${str} <br>
</c:forEach>