EL,即Expression Language。在JavaWeb中屬於JSP技術。java
JSP中的表達式:Java腳本表達式<%=Java表達式%>
;EL表達式${EL表達式}
。web
JavaWeb中最好不要在JSP中寫Java代碼,因此用EL表達式來替代Java表達式。數組
${stu.name}
,即調用域中stu
對應的對象的name
的讀屬性getName()
。但,若stu在4個域中沒有綁定相應對象,那麼就在網頁上輸出空字符串(即什麼都不輸出)。${stu.name}
至關於:安全
<% Student stu=pageContext.getAttribute("stu"); if(stu!=null) out.println(stu.getName()); %>
${stu['name']}
或者${stu["name"]}
。與點運算符做用同樣,但當索引或者名稱不符合Java名稱規範時(如,獲取數組中的某個值),只能用[]運算符。${obj.list[1]}
,Map按照指定的key來獲取元素:${obj.map.key}
或者${obj.map['key']}
。+-*/
。如${i+1}
${表達式?T表達式:F表達式}
。如${a>1?a+1:a-1}
${str+str}
,這是錯誤的。EL內置對象(或隱式對象),即在EL表達式中能夠直接調用的對象。總結起來就是有一個JSP對象,十個Map對象。cookie
Map<String,String[])
,key爲請求參數名,value爲請求參數的值數組。Map<String,String[]>
,key爲請求名,value爲請求頭值數組。Map<String,Cookie>
,key爲cookie的name屬性,value爲cookie對象自己。 1 2 3 4 5 6 7 |
package net.codingXiax.util; public class StringUtil{ public static String toUppercase(String str){ return "字符串"; } } |
在Web-INF目錄下(也能夠在其餘目錄下,該目錄下創建安全性更高),創建一個擴展名爲tld的xml文件。session
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
<?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> |
若是tld文件是在Web-INF目錄或類路徑下,此步可跳過。app
1 2 3 4 5 6 |
<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> |
注意應先用taglib指令引入該uri。jsp
1 2 3 4 5 6 7 8 9 |
<%@ taglib uri="/該tld所在位置" prefix="myfn" %> ... <body> <% pageContext.setAttribute("a","aaa"); %> ${myfn:toUppercase(a)} </body> ... |