一、el表達式
1、概述:jsp的內置表達式語言,用來替代<%=..%>
${el表達式}
2、作用:
1)獲取數據
a、獲取簡單屬性
${屬性名}:依次從pageContext,request,session,application查找指定屬性,
若查找到返回值,結束該次查找,若查找不到,返回""
b、獲取複雜數據
獲取數組中的數據
${域中的名稱[index]}
獲取list中的數據
${域中的名稱[index]}
獲取map中的數據
${域中的名稱.鍵名}
c、獲取Javabean屬性值
${域中javabean名稱.bean屬性}
2)執行運算
a、四則運算
+:只能進行加法運算,字符串形式數字可以進行加法運算
b、關係邏輯運算符
b、empty
判斷一個容器的長度是否爲0(array set list map),還可以判斷一個對象是否爲空
${empty list}
c、取反 not empty
d、三元運算符
${ 3>4?"yes":"no" }
3、el的11個內置對象
PageContext 表示此JSP的PageContext
在jsp頁面中獲取項目名 ${pageContext.request.contextPath}
PageScope 取得Page範圍的屬性名稱所對應的值
RequestScope 取得Request範圍的屬性名稱所對應的值
sessionScope 取得Session範圍的屬性名稱所對應的值
applicationScope 取得Application範圍的屬性名稱所對應的值
param 如同ServletRequest.getParameter(String name)。回傳String類型的值
paramValues 如同ServletRequest.getParameterValues(String name)。回傳String[]類型的值
header 如同ServletRequest.getHeader(String name)。回傳String類型的值
headerValues 如同ServletRequest.getHeaders(String name)。回傳String[]類型的值
initParam 如同ServletContext.getInitParameter(String name)。回傳String類型的值
cookie 如同HttpServletRequest.getCookies()
java中Cookie的api
getName():獲取cookie的名稱
getValue():獲取cookie的value值
二、jstl表達式
1、概述:jsp標準的標籤庫語言,用來替代java腳本
<%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c/fmt/fn" %>
2、分類
1)core:核心類庫
a:c:if 判斷
<c:if test="${el表達式}">滿足的時候輸出的內容</c:if>
例如:判斷登錄
<c:if test="${not empty name }">
${name}歡迎你!
</c:if>
<c:if test="${empty name }">
你尚未登陸請重新登陸<a href="${pageContext.request.contextPath}/login.jsp">點擊登陸</a>
</c:if>
b:c:forEach 循環
格式1:
<c:forEach begin="從那裏開始" end="到那裏結束" step="步長" var="給變量起個名字" varStatus="循環狀態變量">
${i }--${vs.count }--${vs.current }<br>
//count:記錄次數 從1開始 current:當前遍歷的內容 index: 索引 從0開始
</c:forEach>
例: <c:forEach begin="1" end="20" step="2" var="i" varStatus="vs">
${i }--${vs.count }--${vs.current }<br>
</c:forEach>
格式2:
<c:forEach items="${el獲取域中的容器}" var="n">
${n}
</c:forEach>
例: <c:forEach items="${map}" var="en">
${en.key }-- ${en.value }<br/>
</c:forEach>
c:c:url 自動補項目路徑,自動url重寫
<a href='<c:url value="/foreach.jsp" />'>foreach.jsp</a>
相當於:<a href="${pageContext.request.contextPath}/foreach.jsp">foreach.jsp</a>
2)fmt:國際化
<fmt:formatDate value="要顯示的日期" type="DATE/TIME/BOTH" dateStyle="FULL/LONG/MEDIUM/SHORT/DEFAULT"
timeStyle="FULL/LONG/MEDIUM/SHORT/DEFAULT" pattern="自定義格式模式" timeZone="顯示日期的時區"
var="存儲格式化日期的變量名" scope="存儲格式化日誌變量的範圍" />
3)xml/sql:已過時
4)函數庫:
fn:contains(string,substring) 是否包含
fn:containsIgnorrCase(string,substring) 忽略大小寫
fn:endsWith(string,suffix) 是否以suffix結尾
fn:startsWith(string,prefix) 是否以prefix開頭
fn:substring(string,begin,end) 返回字串 以begin開始end結束
fn:substringAfter(string,substring)
fn:substringBefore(string,substring)
fn:toLowerCase(string) 變小寫
fn:toUpperCase(string) 變大寫
fn:trim(string) 去除首尾空格
fn:escapeXml(string) xml/html轉換
fn:indexOf(string,substring) 返回第一次出現的索引
fn:join(array,separator) 返回字串,用separator代替array裏的分隔符
fn:length(item) 返回長度
fn:replace(string,before,after) 替換
fn:split(string,separator) 以separator爲分隔符分割string 返回數組