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)}//含頭不含尾