EL(Expression Language,表達式語義),它提供了Web網頁和JavaBean管理進行通信的重要機制,簡化了JSP開發中對象的引用,從而規範頁面代碼,增加了程序的可讀性和可維護性。EL提供了獲取對象及屬性的簡單方式,支持簡單的運算。
1、EL基本語法
語法格式:
${expression} //expression爲要輸出的內容,可以使字符串或表達式
EL禁用
在低版本及JSP 2.0以前的版本不支持EL,爲了兼容低版本,可以禁用EL,共三種方法。- 禁用一行EL,使用"\",語法格式如下:\${expression};
- 禁用一個JSP頁面的EL,使用JSP的表示指令page,語法格式如下:<%@ page isELIgored = "true"%>
- 禁用一個應用程序的EL,在web.xml配置中禁用,其代碼如下:
<jsp-config> <jsp-property-group> <url-pattern>*.jsp<url-pattern> <el-ignored>true</el-ignored> </jsp-property-group> <jsp-config>
${empty expression} //expression爲空返回true,反之返回false
2、EL隱含對象
EL提供了11個隱含對象,類似如JSP的內置對象,可以直接通過對象名進行操作,分爲三個大類頁面上下文對象、訪問作用域的隱含對象和訪問環境信息的隱含對象。
- pageContext對象,屬於頁面上下文對象,用於訪問JSP部分內置對象(Request、Response、out、session、exception、page),其他JSP內置對象不能被其訪問。在獲得JSP內置對象後,即可獲得其屬性值。
- pageScope對象,屬於訪問作用域隱含對象,用於返回page範圍內的屬性值的集合。
- requestScope對象,屬於訪問作用域隱含對象,用於返回包含request範圍內的屬性值的集合。
- responseScope對象,屬於訪問作用域隱含對象,用於返回包含response範圍內的屬性值的集合。
- sessionScope對象,屬於訪問作用域隱含對象,用於返回包含session範圍內的屬性值的集合。
- applicationScope對象,屬於訪問作用域隱含對象,用於返回包含request範圍內的屬性值的集合。
- param對象,屬於訪問環境信息的隱含對象,用於獲取請求參數的值,應用在參數值只有一個的情況下。
- paramValues對象,屬於訪問環境信息的隱含對象,用於獲取請求參數的值,應用在參數名對應多個值的情況下。
- header和headerValues對象,屬於訪問環境信息的隱含對象,當獲取HTTP請求的一個具體header的值時使用header對象,當同一個header對象對應多個不同的值時使用headerValues對象。
- initParam對象,屬於訪問環境信息的隱含對象,用於獲取Web應用初始化參數的值。
- cookie對象。
3、定義和使用EL函數
定義和使用EL函數的三個步驟:
- 編寫Java類,並編寫公共的靜態方法,用於實現自定的EL函數的具體功能;
- 編寫標籤庫描述文件聲明函數,該文件擴展名爲“.tld”,保存在WEB-INF文件夾下。
- 在JSP頁面中引用標籤庫,並調用定義的EL函數實現相應的功能。
<?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/j2eeweb-jsptaglibrary_2_o.xsd" version="2.0">
<tlib-version>1.0</tlib-version>
<uri>/stringDeal</uri>
<function>
<name>shiftEnter</name>
<function-class>com.wgh.StringDeal</function-class>
<function-signature>java.lang.String shiftEnter(java.lang.String)</function-signature>
</function>
</taglib>
<uri>標記:用於指定tld文件的映射路徑,在應用EL函數時需要使用該標記指定的內容。使用自定義的EL函數的JSP頁面中:
...//代碼省略
<%@ taglib prefix="wgh" uri="/stringDeal"%>
...//代碼省略
${wgh:shiftEnter(param.content)}