EL基礎知識

EL:
EL表達式:向界面輸出內容,只能輸出,不能設置。
基本語法:${}html


1獲取數據:替代jsp中的<%%>
只能獲取四大域對象中的數據java


2執行簡單的數學和邏輯運算
"."運算符  根據對象獲取屬性
[] 獲取有索引的元素,如集合,也能實現點運算符的功能
獲取list元素:
<%
List list=new ArrayList();
list.add(new Person("djw"));
list.add(new Person("www"));
pageContext.setAttribute("p", list);
 %>
${p[1].name }=${p[1]["name"]}
點運算符能夠處理的,能夠用[]運算符來處理,效果相同web

獲取map中的元素:
 <%
Map m=new HashMap();
m.put("djw", new Person("sss"));
m.put("www", new Person("ddd"));
pageContext.setAttribute("p", m);
 %>
${p.djw.name}=${p["djw"]['name'] }cookie

${empty p}判斷對象是否爲null或者空字符串,若是是則返回true,若是不是則返回false,
還能判斷一個集合是否有元素,若是沒有返回true,反之返回falsesession


三元運算符:${判斷?爲真時執行的語句:爲假時執行的語句}app

3 EL的11個隱式對象
EL表達式內置對象    表示類型     備註        對應的jsp內置對象
pageContext     javax.servlet.jsp.PageContext 和JSP的內置對象徹底同樣    pageContext
requestScope    java.util.Map<String,Object> 表明者ServletRequest中的那個Map  沒有
pageScope     java.util.Map<String,Object> 表明者PageContext中的那個Map  沒有
sessionScope    java.util.Map<String,Object> 表明者HttpSessiont中的那個Map  沒有
applicationScope   java.util.Map<String,Object> 表明者ServletContext中的那個Map  沒有
param      java.util.Map<String,String> 表明一個請求參數     沒有
paramValues     java.util.Map<String,String[]> 表明重名的請求參數     沒有
header      java.util.Map<String,String> 表明一個請求消息頭     沒有
headerValues    java.util.Map<String,String[]> 表明重名的請求消息頭    沒有
initparam             表明xml配置文件中的全局參數   沒有
cookie                      java.util.Map<String,cookie>   key表明cook的name,value表明cookie對象 沒有jsp

前面5個就是從不一樣的域中查詢:
代碼:
${sp}從全部域中查詢
${sessionScope.sp}從回話中查詢函數

param:獲取單個的請求參數
${param.name}獲取請求參數中name的屬性
${paramValues.password[0]}
${paramValues.password[1]}
獲取的是請求參數中全部的name的屬性,返回的是一個Map集合url

header:獲取請求消息頭
${header['Accept-Language']}請求消息頭裏有「-」,不能用點運算符。
headerValues:獲取重名的請求消息頭
${headerValues['Accept-Language'][0]}xml

initparam
${initparam.encoding}   utf-8

cookie:
${cookie.JSESSIONID.value}cookie的值
${cookie.JSESSIONID.name}cookie的名稱

4 調用java中的靜態方法
EL表達式沒法直接對字符串進行操做:

jsp中的代碼:
<%
pageContext.setAttribute("s","abvs");
 %>
${myfun:toUppercase(s)}


建立java類用以封裝方法:
public class MyFunctions {
 public static String toUppercase(String str){
  return str.toUpperCase();
 }
}

建立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>
    //短名稱和下行的url命名空間功能相同,用以與jsp文件關聯,並無實際意義
    <short-name>myfun</short-name>
    <uri>www.daijiawei.cn</uri>
     <function>
     //方法名
        <name>toUppercase</name>
        //類全名
        <function-class>text.jsp.MyFunctions</function-class>
        //類的簽名
        <function-signature>java.lang.String toUppercase( java.lang.String )</function-signature>
    </function>
 </taglib>

 EL標準函數:
舉例:
1 toLowerCase
${fn:toLowerCase(x)}
大寫變小寫
2 toUpperCase
小寫變大寫
3 trim
去掉兩端空格
4 esCapeXml
html轉義字符
5 length
字符長度
6 split
分割字符串
pageContext.setAttribute("p", "2009-10-21");
${fn:split(p,"-")[0]}
${fn:split(p,"-")[1]}

7 join
鏈接字符串
pageContext.setAttribute("p", new String[]{"2001","2","21"});
${fn:join(p,"-")}

8indexOf
字符索引
pageContext.setAttribute("p", "asdadsaf);
${fn:indexOf(p,"f")}

9contains
是否包含字符

10substring截取字符串${fn:substring(p,0,4)}//含頭不含尾

相關文章
相關標籤/搜索