轉(zhuǎn)載http://codingxiaxw.cn/
1. 概述
EL,即Expression Language。在JavaWeb中屬于JSP技術(shù)。
JSP中的表達式:Java腳本表達式<%=Java表達式%>;EL表達式${EL表達式}。
JavaWeb中最好不要在JSP中寫Java代碼,所以用EL表達式來替代Java表達式。
語法及用法
2. 語法及用法
2.1獲取某個對象的值,并將其輸出到頁面上。
- .運算符:${stu.name},即調(diào)用域中stu對應(yīng)的對象的name的讀屬性getName()。但,若stu在4個域中沒有綁定相應(yīng)對象,那么就在網(wǎng)頁上輸出空字符串(即什么都不輸出)。
${stu.name}相當于:
<%
Student stu=pageContext.getAttribute("stu");
if(stu!=null) out.println(stu.getName());
%>
- []運算符:${stu['name']}或者${stu["name"]}。與點運算符作用一樣,但當索引或者名稱不符合Java名稱規(guī)范時(如,獲取數(shù)組中的某個值),只能用[]運算符。
- 獲取集合中的元素:List按照索引來獲取元素:${obj.list[1]},Map按照指定的key來獲取元素:${obj.map.key}或者${obj.map['key']}。
2.2邏輯和數(shù)學運算
- empty運算符:判斷一個對象是否為null或者””,是則返回true,否則返回false。也可以判斷一個數(shù)組和集合,當數(shù)組或集合對象不是null,但對象中沒有原素也返回true。
- .數(shù)學運算符:+-*/。如${i+1}
- 三元運算符:${表達式?T表達式:F表達式}。如${a>1?a+1:a-1}
- 不支持字符串連接。如${str+str},這是錯誤的。
2.3、11個內(nèi)置對象
EL內(nèi)置對象(或隱式對象),即在EL表達式中可以直接調(diào)用的對象。總結(jié)起來就是有一個JSP對象,十個Map對象。
- pageContext:與JSP內(nèi)置對象pageContext完全一樣。
- pageScope:當前頁面的域?qū)ο蟮腗ap。
- requestScope:請求域?qū)ο蟮腗ap。
- sessionScope:會話域?qū)ο蟮腗ap。
- applicationScope:應(yīng)用域?qū)ο蟮腗ap。
- param:請求參數(shù)的Map,key為請求參數(shù)名,value為請求參數(shù)的值。
- paramValues:請求參數(shù)(可重名)的Map<String,String[]),key為請求參數(shù)名,value為請求參數(shù)的值數(shù)組。
- header:請求消息頭Map,key為請求頭名,value為對應(yīng)的值。
- cookie:封裝cookie的Map<String,Cookie>,key為cookie的name屬性,value為cookie對象本身。
- initParam:初始化參數(shù)的Map,在web.xml中的context-param元素中定義的初始化參數(shù)。
2.4自定義EL函數(shù)。
第一步:定義一個有靜態(tài)方法的類。
package net.codingXiax.util;
public class StringUtil{
public static String toUppercase(String str){
return "字符串";
}
}
第二步:配置tld。
在Web-INF目錄下(也可以在其他目錄下,該目錄下建立安全性更高),建立一個擴展名為tld的xml文件。
<?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>myfn</short-name>
<uri>http://www.yrom.net/jsp/string/fn</uri>
<function>
<name>toUppercase</name>
<function-class>net.yrom.util.StringUtil</function-class>
<function-signature>java.lang.String toUpperCase( java.lang.String )</function-signature>
</function>
</taglib>
第三步:配置web.xml.
如果tld文件是在Web-INF目錄或類路徑下,此步可跳過。
<jsp-config>
<taglib>
<taglib-uri>http://www.yrom.net/jsp/string/fn</taglib-uri>
<taglib-location>/WEB-INF/myfn.tld</taglib-location>
</taglib>
</jsp-config>
第四步:在JSP中使用。
注意應(yīng)先用taglib指令引入該uri。
<%@ taglib uri="/該tld所在位置" prefix="myfn" %>
...
<body>
<%
pageContext.setAttribute("a","aaa");
%>
${myfn:toUppercase(a)}
</body>
...