java學習筆記—EL運算式(38)

來源:互聯網
上載者:User

標籤:

EL運算式

EL即Expression Language,主要的任務是協助開發人員簡化擷取域屬性。

但是一般情況下需要使用EL和JSTL結合使用。

文法:

${

    // 隱含對象|直接寫域中的屬性

}   

?    算術運算<!-- 算術運算 -->      20+10 = ${ 20+10 } <br/>             20-10 = ${ 20-10 } <br/>             20*10 = ${ 20*10 } <br/>             20/10 = ${ 20/10 } <br/>             20%10 = ${ 20%10 } <br/>       
?    比較運算  <!-- 比較運算 -->       20 > 10 = ${ 20 > 10 } <br/>            20 < 10 = ${ 20 < 10 } <br/>            20 >= 10 = ${ 20 >= 10 } <br/>            10 == 10 = ${ 10 == 10 } <br/>      ${ str == null }
?    三目運算子${ name != null ? "歡迎":"註冊"}
?    邏輯運算${ 12>10 && 1<2 }<br/>  

一  擷取域對象(重點)

1. 普通資料

<!-- 擷取普通屬性 -->       <%         request.setAttribute("name","jack");      %>      ${name}<br/>

以上的代碼在擷取域屬性的時候沒有指定給任何的域空間,那麼底層一定按照小到大的方式逐一的檢測的域屬性。

pageContext.findAttribute(“”);          à 實現原理

2 擷取數組屬性

<!-- 擷取數組屬性 -->      <%         int [] ins = {1,2,3,4};        request.setAttribute("arrs",ins);      %>      ${arrs}<br/>      ${arrs[2]}<br/>      ${arrs["2"]}<br/>  ? 該方式不是給數組用,是個集合使用。

3  List集合

   <!-- 擷取數組屬性 -->      <%         List<String> list = new ArrayList<String>();        list.add(0,"jiao");        list.add(1,"ning");        list.add(2,"bo");        request.setAttribute("list",list);      %>      ${list }<br/>      ${list[0] }<br/>      ${list["0"] }<br/>

4  擷取Map屬性

<%         LinkedHashMap<String,String> map =  new LinkedHashMap<String,String>();        map.put("001","ooooo");        map.put("002","fffff");        map.put("003","uuuuu");        request.setAttribute("map",map);      %>      ${map }<br/>      ${map[001] }<br/>      ${map["001"] }<br/>      <%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>      <c:forEach items="${map}" var="entry">          ${entry.key } = ${entry.value }<br/>      </c:forEach>

6  Bean操作

<!-- 擷取Map中Bean屬性 -->      <%         LinkedHashMap<String,Cat> cats =  new LinkedHashMap<String,Cat>();        cats.put("001",new Cat("A貓",3,"波斯貓"));        cats.put("002",new Cat("B貓",3,"狸貓"));        cats.put("003",new Cat("C貓",3,"加菲貓"));               request.setAttribute("cats",cats);      %>      <c:forEach items="${cats}" var="entry">          ${entry.key}  = ${entry.value.name } , ${entry.value.age },${entry.value.type }<br/>        </c:forEach>

7  EL隱含對象

pageScope

requestScope

sessionScope

applicationScope

如果在擷取域屬性的時候沒有指定具體的域,那麼逐一的尋找比較耗時,因此希望大家在明確網域名稱的時候一定要指定網域名稱。

pageContext   該對象可以擷取request對象

舉例:

<!-- 隱含對象 -->      ${pageContext.request.method }<br/>      ${pageContext.request.servletPath }<br/>      ${pageContext.request.contextPath }<br/>      ${pageContext.request.protocol }<br/>

擷取請求參數paramparamValues
舉例:${param.name }<br/>${paramValues.likes[0] }<br/>

擷取要求標頭資訊headerheaderValues
舉例:${header["accept"] }<br/>initParam
擷取Cookiecookie
舉例:${cookie }<br/>${cookie.address }<br/>${cookie.address.name }<br/>${cookie.address.value }<br/>
EL和函數庫

問題:在資料顯示的時候經常需要調用一些方法對需要顯示的資料進行基本的處理,如:

資料過濾、求子串等操作。那麼就需要使用EL運算式進行快速的函數調用。

  1. 引入HTMLFilter.java類
  2. 描述為函數

2.1 在WEB-INF中建立一個myfun.tld檔案

<?xml version="1.0" encoding="UTF-8"?><taglib xmlns="http://java.sun.com/xml/ns/j2ee"  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"  xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-jsptaglibrary_2_0.xsd"  version="2.0">  <tlib-version>1.0</tlib-version>  <short-name>jnb</short-name>  <function>    <name>filter</name>    <function-class>cn.itcast.utils.HTMLFilter</function-class>    <function-signature>java.lang.String filter(java.lang.String)</function-signature>  </function></taglib>  

2.2  引入函數庫

%@taglib uri="/WEB-INF/myfuns.tld" prefix="jnb"%

1.2  使用EL調用函數

<td>${jnb:filter(entry.value.info)}</td>

注意:

  1. EL運算式中不能繼續嵌套EL運算式
  2. 定義函數的時候函數必須是靜態。
總結

JSTL總過有5個庫,但是由於JSP主要是做資料顯示的,因此我們只學習核心庫和函數庫。

java學習筆記—EL運算式(38)

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.