雖然說JSP不推薦學,但作爲了解,還是總結一丟丟。
EL Expression Language
基本形式:${el表達式}
獲取數據
只能獲取域中的數據,不能設置只能獲取,不能遍歷。
【獲取常量】
支持獲取數字,字符串,布爾類型的常量。
【域中自動搜尋獲取變量】
自動搜尋域,獲取變量,在四大作用域中由小到大的順序搜尋指定名稱的屬性。
如果搜尋到,直接獲取並返回,如果沒有就返回一個空字符串。
【指定域獲取變量】
可以直接使用如下四個內置對象操縱指定域:
${pageScope.name }
${requestScope.name }
${sessionScope.name }
${applicationScope.name }
【獲取數組】
數據必須要在某一個域中,纔可以獲取
<%
String names [] = {"summerday","天喬巴夏","小丸子","littleW"};
pageContext.setAttribute("names", names);
%>
${names[3] }
【獲取集合】
和數組類似。
<%
List<String> list = new ArrayList<String>();
list.add("天喬巴夏");
list.add("summerday");
pageContext.setAttribute("list", list);
%>
${list[0] }
【獲取map】
<%
Map<String,String> map = new HashMap<String,String>
();
map.put("name","天喬巴夏");
map.put("gender","男");
map.put("age",18)
pageContext.setAttribute("map", map);
%>
${map["name"] }
${map.gender }
【獲取對象】
<%
Person p = new Person("summerday",19);
pageContext.setAttribute("p", p);
%>
${p.name }
${p["age"] }
執行運算
【算術運算】【關係運算】【邏輯運算】【三元表達式】
【Empty運算】
- 如果對象爲null,字符串爲空
- 集合沒有任何元素返回true
<%
String name = "summerday";
pageContext.setAttribute("name", name);
String addr = "";
pageContext.setAttribute("addr",addr);
List<String> list = new ArrayList<String>();
pageContext.setAttribute("list",list);
%>
${empty name}<%--false--%>
${empty addr}<%--true--%>
${empty list}<%--true--%>
內置對象
【作用域】pageScope、requestScope、sessionScope、ApplicationScope
【請求參數】:param、paramValues
【web應用初始化參數】:initParam
【請求頭】:header、headerValues
【所有cookie組成的Map】:cookie
【當前頁面的對象】:pageContext
jstl標籤技術
JavaServerPages Standard Tag Library
可以和 EL 配合來取代傳統直接在頁面上嵌入 Java 程序(Scripting)的做法,以提高程序可讀性、維護性和方便性。
引入jstl
<%@taglib uri="" prefix=""%>
jstl標籤庫的子庫
核心標籤庫:<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
jstl常用標籤
set【設置+修改】
<c:set var="name" value="天喬巴夏" scope="request"></c:set>
${name}
<c:set var="name" value="summerday"></c:set>
${name}
remove【移除】
<c:set var="num" scope="session" value="${10}"/>
<p>num: <c:out value="${num}"/></p>
<c:remove var="num"/>
<p>刪除num後: <c:out value="${num}"/></p>
if【判斷】
<c:set var="age" value="18" scope="request"></c:set>
<c:if test="${age==18}" var="flag">
yes
</c:if>
<c:if test="${age!=18}">
no
</c:if>
${flag} <%--true--%>
catch【捕獲異常】
<c:catch var="e">
<%
int i = 1/0;
%>
</c:catch>
${e}<%--java.lang.ArithmeticException: / by zero--%>
choose【多條件判斷】
<c:set var="num" value="18" scope="request" ></c:set>
<c:choose>
<c:when test="${num<10}">num<10</c:when>
<c:when test="${num<20}">num<20,num>=10</c:when>
<c:otherwise>num>=20</c:otherwise>
</c:choose>
forTokens【切割】
<c:forTokens items="www.baidu.com" delims="." var="domains">
<c:out value="${domains}"/><p>
</c:forTokens>
forEach【遍歷】
<%--varStatus存儲屬性,count屬性從1開始計數--%>
<c:forEach begin="1" end="10" step="1" var="i" varStatus="stat">
<c:if test="${stat.count % 2 == 0 }">
<font color="red">${i }</font>
</c:if>
<c:if test="${stat.count % 2 != 0 }">
<font color="blue">${i }</font>
</c:if>
</c:forEach>