javascript
el表达式 循环_EL表达式和JSTL标签库(百战程序员047天)
1.EL表達式
介紹:是一種非常簡潔的表達式,語法簡單,便于使用,靈感來源于ECMAScript和Xpath的表達式語言
樣式:
${表達式}
作用:簡化jsp中獲取作用域或者請求數據的寫法。
獲取請求數據
EL表達式
1)獲取請求數據
(1)請求實體數據
${param.鍵名}
請求實體中同鍵不同名的數據
${paramValues.鍵名}//返回的數組,比如復選框。具體獲得某個值,數組名[];
(2)獲取請求頭的數據
${header} //返回的是所有的請求頭中的鍵值對
${header["鍵名"]}//返回鍵對應的值
如果一個鍵對應多個值 ${headerValues["accept-language"]}//返回的是數組
(3)獲取cookie數據
${cookie}獲取所有的Cookie對象 鍵值對
${cookie.cookie對象的鍵名}獲取存儲了指定Cookie數據的Cookie對象
${cookie.Jcookie對象的鍵名.name}<br>獲取存儲了指定Cookie數據的Cookie對象的存儲的鍵
${cookie.Jcookie對象的鍵名.value}獲取存儲了指定Cookie數據的Cookie對象的存儲的值
獲取作用域數據
1)作用域對象:pageContext request session application
2)作用域數據:我們使用setAttribute方法存儲的數據
獲取:
普通字符串數據 ${鍵名}
對象數據 ${鍵名.屬性名}
集合數據
list集合 ${鍵名[角標]}
Map集合 ${map集合作用域存儲的鍵名.map集合存儲的數據的鍵名}
3)作用域數據查找順序:如果找到了則不再查找,如果找不到,則繼續查找下一個作用域,如果四個作用域中都沒有則什么都不顯示
pageContext-->request-->session-->application
4)指定作用域獲取數據:
${pageScope.鍵名} 指明獲取pageContext作用域中的數據
${requestScope.鍵名} 指明獲取request作用域中的數據
${sessionScope.鍵名} 指明獲取session作用域中的數據
${applicationScope.鍵名} 指明獲取application作用域中的數據
EL邏輯表達式運算
算術運算:+,-,*,/ 在EL表達式中可以直接進行算術運算
${算術表達式} 例如 :${1+2}
注意:+表示算術運算,不能進行字符串連接
邏輯運算:&& || !
${邏輯表達式}
注意:沒有單& 和單|
比較運算:== != >,>=,<,<=
${比較表達式}
三目運算:
${條件?值:值}
EL表達式的empty判斷
${empty 鍵名}
作用:
判斷該鍵是否有存儲有效數據
注意:如果普通的數據是空,用empty返回true
如果是對象數據,調用無參構造方法創建實例,用empty返回的是false,因為對象中屬性會默認賦值給null.
JSTL標簽庫:
1.是EL表達式的擴展,它是一個標簽語言
1) 作用:提升jsp頁面的邏輯代碼的編碼效率
2)在jsp中引入
<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
prefix:前綴
2.核心標簽庫:
基本標簽:
1)out標簽:
樣式: <prefix:out value="${表達式}" default="默認值"></prefix:out>
作用:結合EL表達式,將數據響應到瀏覽器,如果EL表達式沒有取到數據,會 采用默認的屬性的值
2)set標簽
樣式:
<prefix:set var="鍵名" value="數據" scope="作用域"></prefix:set>
作用:將數據存儲到指定的作用域中
scope:的值 page request session application
沒有scope默認往pagecontext中放
3)remove 標簽
<prefix:remove var="鍵名“ scope="作用域名"></prefix:remove>
作用:將作用域的數據數據。如果沒有scope的屬性,默認是刪除4個作用域的含有相同的鍵名的數據,scope可以指定作用域
使用pageContext.removeAttriute(String name,int scope)刪除指定的作用域
scope: 1 pagecontext 2request 3 session 4application
注意:pageContext.removeAttribute("鍵名")會刪掉所有作用域含有的相同鍵名的數據
邏輯標簽:
單分支標簽:
1)if 標簽:
樣式:
<prefix:if text="EL表達式">
輸出的標簽
</prefix:if >
作用:可以根據el表達式進行一定程度的單分支邏輯判斷。
注意:
test屬性中書寫的是EL表達式,或者說是EL表達式的邏輯表達式。
該標簽只能進行EL表達式相關的邏輯判斷。不能進行EL表達式不能獲取的數據的邏輯處理
多分支標簽:
樣式:
<prefix:choose>
<prefix:when text="EL表達式"></prefix:when >
<prefix:when text="EL表達式"></prefix:when >
……
<prefix:otherwise ></prefix:otherwise >
</prefix:choose>
注意:多分支標簽只能執行一個,類似于if(){} else if(){} else {}
例子:
<c:choose> <c:when test="${score>=90}"> <b>賞美女</b> </c:when> <c:when test="${score>=80 &&score<90 }"> <b>賞蘿莉</b> </c:when> <c:otherwise> <b>賞丑八怪加大胖子一個</b> </c:otherwise></c:choose>注意:EL表達式的數據,只能是EL能獲取的數據。
循環標簽:
樣式:
<prefix:forEach begin="" end="" step="" varstatus="">
循環體
<prefix:forEach>
標簽中的屬性:begin:從聲明循環開始的位置
end:循環結束的位置
step:循環跨越的步數
varstatus:聲明變量記錄循環的狀態,例如:變量名=i;
注意:記錄的數據,存儲到了作用域,可以直接用EL表達式獲取
實例:
${ i.index} :獲取循環的下標
${i.count} :獲取當前的循環的次數
${i.first}:判斷是否是第一次循環
${i.last}:判斷是否是最后一次循環
例子:
<c:forEach begin="1" end="5" step="2" varStatus="i"> <c:if test="${i.count==3}"> <b>哇偶你是大帥鍋</b> </c:if> </c:forEach>當遍歷數組的長度不知道的時候比如集合,map:
<prefix:foreach items="" var="" varstatus="" >
</prefix:foreach>
items:要遍歷的集合或者數組或者map,在作用域中的鍵名,用EL表達式獲取。
從索引為0的位置開始遍歷
var:指向集合或者數組的元素。在循環體中,用EL表達式獲取,
注意如果是map的話,在循環體中用EL表達式獲取的是鍵值對關系,獲得具體的key
用${var中的變量名.key}
獲取值得話${var中的變量名.value}
注意:var聲明的變量存儲到了作用域,得用EL表達式獲取
實例:
<!-- 遍歷List集合 -->
<% //創建測試數據list ArrayList<String> list=new ArrayList<String>(); list.add("蘋果"); list.add("榴蓮"); list.add("荔枝"); //將list存儲到作用域中 request.setAttribute("list",list); %> <c:forEach items="${list}" var="s" varStatus="i"> ${s}--${i.index}--${i.count}<br /> </c:forEach> <!--遍歷map集合 --> <% //聲明Map集合測試數據 HashMap<String,String> hs=new HashMap<String ,String>(); hs.put("s1","唱歌"); hs.put("s2", "跳舞"); hs.put("s3", "敲代碼"); //將數據存儲到作用域中 request.setAttribute("hs", hs); %> <c:forEach items="${hs}" var="s"> ${s.key}--${s.value}<br /> </c:forEach>總結
以上是生活随笔為你收集整理的el表达式 循环_EL表达式和JSTL标签库(百战程序员047天)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: python实现解释器_Python设计
- 下一篇: 服务器换完主板后无盘进不了系统,更换主板