不是一種語言,只是一個表達式而已,是JSP中專門用于顯示數據用的
主要作用:獲取數據并顯示到頁面上。
EL:${cart[0].name} 簡單,寫起來方便。
實際開發:不要在JSP中使用Java表達式,而要使用EL表達式。
EL表達式的基本語法
${EL表達式}
EL表達式,是從四大域對象中取數據的。
EL表達式中沒有空指針異常,也沒有數組越界,沒有字符串連接。
EL中的變量
EL表達式中的的變量就是一個基本的存儲單元,EL表達式可以將變量映射到一個對象上
${ name }
EL 中的運算符
1.點運算符(.):用于訪問JSP頁面中某些對象的屬性。
2.中括號運算符([]):用于訪問JSP頁面中某些對象的屬性。
3.算數運算符:進行算數運算
4.比較運算符:用于比較
5.邏輯運算符:對結果為布爾類型的表達式進行運算
6.empty運算符:判斷某個對象是否為空,是空為true
7.條件運算符:${A? B:C}三元運算符
8."()"運算符:改變運算優先級
EL隱式對象
隱式對象 作用
1.pageContext 對應于JSP頁面中的pageContext對象
2.pageScope 代表page域中用于保存屬性的Map對象
3.requestScope 代表request域中用于保存屬性的Map對象
4.sessionScope 代表session域中用于保存屬性的Map對象
5.applicationScope 代表application域中用于保存屬性的Map對象
6.param 表示一個保存了所有請求參數的Map對象
7.paramValues 表示一個保存了所有請求參數的Map對象,它對于某個請求參數, 返回的是一個string類型數組
8.header 表示一個保存了所有http請求頭字段的Map對象
9.headerValues 表示一個保存了所有http請求頭字段的Map對象,返回string類型數組
10.cookie 表示一個保存了所有cookie的Map對象
11.initParam 表示一個保存了所有web應用初始化參數的map對象
pageContext對象
為了獲取JSP頁面的隱藏對象可以使用EL表達式中的pageContent隱藏對象
如果某個對象存儲的屬性名與EL隱式對象的名稱相同,EL表達式獲取對象屬性無法實現
web域相關對象
${pageScope.name }
${requestScope.name}
${4.sessionScope.name}
${5.applicationScope.name}
param和paramValues代表請求參數的隱式對象
獲取請求參數
param相當于request.getParameter()方法
${param.num}
paramValuesrequest.getParameterValues()方法
${paramValues.num[0]}
initParam
該對象可以獲取web應用程序中全局初始化參數
${initParam.count}
<context-param>
<param-name>xxx</param-name>
<param-value>yyy</param-value>
</context-param>
<context-param>
<param-name>iii</param-name>
<param-value>jjj</param-value>
</context-param>
${initParam.xxx}
${initParam.iii}
代表HTTP請求消息的隱式對象
header和headerValues
定義和使用EL函數
步驟
1、定義一個普通類,提供實現功能的靜態方法(EL函數只能調用靜態方法)
public class MyFunctions {
public static String toUppercase(String s){
return s.toUpperCase();
2、EL函數進行配置:在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.xxx/xxx/functions</uri>//域名作用唯一標識
<function>
<name>toUppercase</name>//函數名
<function-class>com.xxx.xxx.MyFunctions</function-class>
//方法類型,參數類型
<function-signature>java.lang.String toUppercase( java.lang.String )</function-signature>
</function>
</taglib>
3.3、在JSP中使用自定義的EL函數,通過taglib指令引入外部的函數庫
<%@ taglib uri="http://www.itheima.com/jsp/functions" prefix="myfn"%>