EL表達式 與 JSTL標簽庫
EL表達式
什麽是el
jsp內置的表達式語言
el表達式的作用
代替腳本
el如何獲取數據
1、獲取域中的數據
簡單數據:${域中的key值}
註意:如果多個域中的key值一樣 那麽取出的順序?
從範圍小的開始查找,查找到以後就返回
如果沒有查詢到對應的key 返回""(空字符串)
例如:
<%
pageContext.setAttribute("num", 5);
request.setAttribute("num", 1);
session.setAttribute("num", 0);
application.setAttribute("num", 2);
%>
<p>${ requestScope.num}</p>
<p>${ sessionScope.num}</p>
<p>${ applicationScope.num}</p>
<p>${ num}</p>
復雜數據:
數組:${域中的key值 [ index ] }
list:${域中的key值 [ index ] }
map:
一般數據:${域中的key值.map中的key}
如果map的是特殊(數字等):${域中的key值 [ " key " ] }
javaBean導航:
javaBean:我們編寫的一個普通java類:類似:User,Person……
javaBean規範:
1、必須是一個共有的類
2、提供私有字段
3、必須提供私有字段公共的get、set方法(boolean :is)
4、必須提供無參構造
5、一般來說需要實現Serializable接口(序列化)
用法:
${域中的key值.javabean屬性}
javabean屬性:就將get或set方法去掉頭(set,get) 然後將首字母小寫
2、el表達式的內置對象:pageContext
${ pageContext.request.contextPath} <!--獲取項目的根路徑-->
${pageContext.request.requestURI} <!-- 請求的url -->
${pageContext.request.queryString} <!-- 獲取查詢參數-->
${pageContext.request.method} <!-- 請求方式-->
${pageContext.request.protocol} <!-- http協議-->
${pageContext.request.serverName} <!-- 服務器名字-->
3、el中的保留字段
and | eq | gt | div |
or | ne | le | mod |
no | lt | ge | true |
instanceof | empty | null | false |
4、el執行運算
算數:
+:只能進行加法,不能實現拼接
/:div 例如:${ 10 / 2 } 等同於 ${ 10 div 2 }
%:mod 例如:${ 10 % 2 } 等同於 ${ 10 mod 2 }
關系:
> 或者 gt 例如:${8>9} 或者 {8 gt 9 }
>= 或者 ge 例如:${45>=9} 或者 ${45 ge 9 }
< 或者 lt 例如:${4<9} 或者 ${4 lt 9 }
<= 或者 le 例如:${9<=8} 或者 ${9 le 8 }
== 或者 eq 例如:${4==4} 或者 ${4 eq 4 }
!= 或者 ne 例如:${4!=3} 或者 ${4 ne 3 }
邏輯:
&& 或者 and 例如:${false && false} 或者 ${false and false }
|| 或者 or 例如:${true || false} 或者 ${true or false }
! 或者 not 例如:${!true}(相當於${false}) 或者 {not true }
empty:判斷容器的長度是否為0、判斷對象是否為空
例如:
JSTL 標簽庫
作用:用來代替腳本
導入格式:
taglib:導入標簽庫
<%@ taglib prefix="",uri="" %>
prefix:前綴(一個命名)
uri:標簽路徑
JSTL標簽庫的分類
核心標簽:Core
if:條件判斷
屬性:
test:條件表達式(${})
var:接收條件表達式的結果
scope:var變量的作用範圍
例如:
<c:if test="${ 1==1}" var="result" >
${result}
1 等於 1
</c:if>
<c:choose>(與switch的功能類似)
屬性:
choose:switch
when:case
otherwise:defalut
例如:
<c:choose>
<c:when test="${3>4}">
3>4
</c:when>
<c:when test="${3<4}">
3<4
</c:when>
<c:otherwise>
3 = 4
</c:otherwise>
</c:choose>
<c:foreach>:循環
屬性:
begin:開始
end:結束
step:遞增值
items:要遍歷的對象
var:遍歷結果
varStatus:循環狀態
對象:
index:以begin的值為開始下標
count:當前執行的次數
first:判斷是否為第一個變量,是(返回true),否(返回false)
last:判斷是否為最後一個變量,是(返回true),否(返回false)
例子:
<c:forEach begin="5" end="10" step="1" var="i" varStatus="vs">
${vs.index}<br>
${vs.count}<br>
${vs.first}<br>
${vs.last}<br>
變量值: ${i}<br>
</c:forEach>
<c:out>:<%=%> 輸出
<c:set>:向域中設置值
屬性:
value:值
var:key
scope:域
例如:
<c:set value="abc" var="msg" scope="request"></c:set>
格式化標簽:fmt
例如:
<c:set var="now" value="<%=new Date()%>" scope="request"></c:set>
<p> <fmt:formatDate value="${now}" type="both"></fmt:formatDate></p>
函數標簽:fn
例如:
<c:set value="abc" var="msg" scope="request" ></c:set>
${fn:toUpperCase(msg)}
${fn:contains("aaabc","aaa" )}
EL表達式 與 JSTL標簽庫