轉(zhuǎn)載http://codingxiaxw.cn/
1. 概述
EL翠桦,即Expression Language婚肆。在JavaWeb中屬于JSP技術(shù)缸棵。
JSP中的表達(dá)式:Java腳本表達(dá)式<%=Java表達(dá)式%>;EL表達(dá)式${EL表達(dá)式}栋操。
JavaWeb中最好不要在JSP中寫Java代碼,所以用EL表達(dá)式來替代Java表達(dá)式渗柿。
語法及用法
2. 語法及用法
2.1獲取某個對象的值个盆,并將其輸出到頁面上。
- .運(yùn)算符:${stu.name}做祝,即調(diào)用域中stu對應(yīng)的對象的name的讀屬性getName()砾省。但,若stu在4個域中沒有綁定相應(yīng)對象混槐,那么就在網(wǎng)頁上輸出空字符串(即什么都不輸出)编兄。
${stu.name}相當(dāng)于:
<%
Student stu=pageContext.getAttribute("stu");
if(stu!=null) out.println(stu.getName());
%>
- []運(yùn)算符:${stu['name']}或者${stu["name"]}。與點(diǎn)運(yùn)算符作用一樣声登,但當(dāng)索引或者名稱不符合Java名稱規(guī)范時(如狠鸳,獲取數(shù)組中的某個值)揣苏,只能用[]運(yùn)算符。
- 獲取集合中的元素:List按照索引來獲取元素:${obj.list[1]}件舵,Map按照指定的key來獲取元素:${obj.map.key}或者${obj.map['key']}卸察。
2.2邏輯和數(shù)學(xué)運(yùn)算
- empty運(yùn)算符:判斷一個對象是否為null或者””,是則返回true铅祸,否則返回false坑质。也可以判斷一個數(shù)組和集合,當(dāng)數(shù)組或集合對象不是null临梗,但對象中沒有原素也返回true涡扼。
- .數(shù)學(xué)運(yùn)算符:+-*/。如${i+1}
- 三元運(yùn)算符:${表達(dá)式?T表達(dá)式:F表達(dá)式}盟庞。如${a>1?a+1:a-1}
- 不支持字符串連接吃沪。如${str+str},這是錯誤的什猖。
2.3票彪、11個內(nèi)置對象
EL內(nèi)置對象(或隱式對象),即在EL表達(dá)式中可以直接調(diào)用的對象不狮〗抵總結(jié)起來就是有一個JSP對象,十個Map對象摇零。
- pageContext:與JSP內(nèi)置對象pageContext完全一樣垮耳。
- pageScope:當(dāng)前頁面的域?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目錄下(也可以在其他目錄下,該目錄下建立安全性更高)闪金,建立一個擴(kuò)展名為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>
...