java基礎學習:JavaWeb之EL表達式

其餘更多java基礎文章: java基礎學習(目錄)java


1、EL表達式

EL 全名爲Expression Language。JSP中可使用EL表達式,EL表達式是用"${}"括起來的腳本,用來更方便地讀取對象,EL表達式寫在JSP的HTML代碼中,而不能寫在"<%%>"引發的JSP腳本中web

EL表達式的功能:數組

  1. 獲取數據:EL表達式主要用於替換JSP頁面中的腳本表達式,以從各類類型的web域 中檢索java對象、獲取數據。(某個web域 中的對象,訪問javabean的屬性、訪問list集合、訪問map集合、訪問數組)
  2. 執行運算:利用EL表達式能夠在JSP頁面中執行一些基本的關係運算、邏輯運算和算術運算,以在JSP頁面中完成一些簡單的邏輯運算。${user==null}
  3. 獲取web開發經常使用對象:EL 表達式定義了一些隱式對象,利用這些隱式對象,web開發人員能夠很輕鬆得到對web經常使用對象的引用,從而得到這些對象中的數據。
  4. 調用Java方法:EL表達式容許用戶開發自定義EL函數,以在JSP頁面中經過EL表達式調用Java類的方法。

1.一、獲取數據

使用EL表達式獲取數據語法:"${標識符}"cookie

  1. EL表達式語句在執行時,會調用pageContext.findAttribute方法,用標識符爲關鍵字,分別從page、request、session、application四個域中查找相應的對象,找到則返回相應對象,找不到則返回」」 (注意,不是null,而是空字符串)。 ${abc}
  2. EL表達式能夠很輕鬆獲取JavaBean的屬性,或獲取數組、Collection、Map類型集合的數據。${requestScope.emp.address.street}

1.二、執行運算

語法:${運算表達式},EL表達式支持以下運算符:
1)關係運算發
session

2)邏輯運算符
app

3)empty運算符:檢查對象是否爲null(空),${!empty(list)}函數

4)二元表達式:${user!=null?user.name :""}post

5)[ ] 和 . 號運算符學習

1.三、得到web開發經常使用對象

EL表達式語言中定義了11個隱含對象,使用這些隱含對象能夠很方便地獲取web開發中的一些常見對象,並讀取這些對象的數據。測試

分析:
pageScope、requestScope、sessionScope、applicationScope表明四個做用域對象(用於保存屬性的Map對象)
pageContext:表示的是JSP中內置對象pageContext,能獲取request等其餘JSP八大內置對象
param:表示一個請求參數, ${param.username}等效 request.getParameter("username");(表示一個保存了全部請求參數的Map對象)
paramValues:表示一組請求參數,${paramValues.abc}等效request.getParameterValues("abc");這種多選框(表示一個保存了全部請求參數的Map對象,它對於某個請求參數,返回的是一個string[])
header:表示一個請求頭,${header.referer}等效request.getHeader("referer");
headerValues:表示一組請求頭,${header.cookie}等效 request.getHeaders("cookie");獲取的請求頭參數中的內容是一組內容,好比cookie就有能夠是多個cookie一塊兒傳過來
cookie:得到cookie對象(表示一個保存了全部cookie的Map對象)
initPatam:web項目初始化參數,servletContext.getInitParameter("xxx");(表示一個保存了全部web應用初始化參數的map對象)

注意1:還有一種特殊的用法,直接獲取對象變量${user.username},user爲User的一個實例對象,而且存放在page做用域中,上面這句代碼的意思是,依次從page、request、session、application做用域查找user對象,直到找到爲止,底層使用的是pageContext.findAttribute(); 是同樣的效果。

注意2:測試header和headerValues或者有些參數時,若是頭裏面有「-」 ,例Accept-Encoding,則要header["Accept-Encoding"]、headerValues["Accept-Encoding"] 測試cookie時,例${cookie.key}取的是cookie對象,如訪問cookie的名稱和值,須${cookie.key.name}或${cookie.key.value}

2、總結

  EL表達式比較簡單,使用它的目的是爲了減小JSP腳本,儘可能不要在HTML中嵌入Java代碼,顯的很混亂,而在HTML中使用EL表達式,就比較好來獲取JSP中各類對象,獲取四大做用域中的值,

  1. 若是要獲取四大做用域中的數據,則可使用{}、{pageScope.xxx}
  2. 若是想要獲取請求參數,則使用param或paramValues
  3. 若是想要獲取請求頭中的一些信息,獲取想要獲取Servlet的一些對象,好比request、session等,可使用pageContext來獲取request對象,而後在獲取所須要的信息,或者直接使用header對象來獲取頭信息
  4. 若是想獲取web初始化參數,則使用initPatam。

最主要的是要記得EL中有哪11個內置對象,知道了他們就知道了EL能夠獲取哪些信息。

相關文章
相關標籤/搜索