1. 程式人生 > >EL表達式 與 JSTL標簽庫

EL表達式 與 JSTL標簽庫

技術分享 特殊 div 需要 wid == 根路徑 method eight

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標簽庫