JSP: EL表示式和JSTL標籤庫
阿新 • • 發佈:2020-08-14
EL表示式
概念:expression language表示式語言
作用:替換和簡化jsp頁面中java程式碼的編寫
語法:${ 表示式 }
注意:jsp自動直接EL表示式。如果需要忽略:
- 忽略所有:加入指令
<%@ page isELIgnored="true" %>
- 忽略一個:加一個轉義字元,
\${ ... }
使用:運算、取值。
運算
運算子:(比Java多幾個,可以幾個字母表示)
- 算數運算子:
+ - * / % div mod
- 比較運算子:
> < >= <= == !=
- 邏輯運算子:
&& || ! and or not
- 空運算子:
empty
(用於判斷字串、集合、陣列是否為null,長度是否為0)
empty例子
${empty str}
取值
EL表示式只能從域物件中獲取值
語法:
${域名.鍵名}
:從指定域中獲取指定鍵的值- 簡化寫法
${鍵名}
:表示依次從最小的域中找鍵名 - list集合寫法:
${域名.集合名[索引]}
- map集合寫法:
${域名.集合名.key名}
域名:一共四個
- pageScope 對應pageContent型別
- requestScope 對應request型別
- sessionScope 對應session型別
- 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個隱式物件
- pageContext
- 獲取其它8個隱式物件,如
${pageContext.request.contextPath}
(動態獲取虛擬目錄)
- 獲取其它8個隱式物件,如
JSTL標籤庫
概念:JavaServer Pages Tag Library, JSP標準標籤庫
- 是Apache組織提供的開源的免費的jsp標籤
作用:用於簡化和替換jsp頁面上的java程式碼
使用步驟:
- 匯入jstl相關的jar包
- 引入標籤庫
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
- 使用標籤
常用的JSTL標籤:
- if 相當於java中的if語句
- choose 相當於java中的switch語句
- 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>