1.EL表達式的語法格式很簡單:
以前編寫jsp代碼時,如果要獲取表單中的用戶名,一般使用 <%=request.getParameter("name")%>,這樣當然也可以獲取到值,但是又把html代碼和java代碼混到一起,看起來比較亂套。現在使用EL表達式的話就比較簡潔了:${param.name}就可以解決了。
注意:${表達式} 表達式部分不需要加引號,如果寫成 ${"param.name"} ,那麼頁面上顯示出來的就不是表單中name的值了,而是 "param.name" 這個字符串。表達式與開始符和終結符之間的空格被忽略不計。如果表達式的值爲null,那麼頁面將顯示一個空格而不是null。
2.EL的兩個運算符 "." 和 "[]"
${param.name} 和 ${param["name"]} 是等價的,但是當要存取的屬性名稱中包含有一些特殊字符如 "." 或 "-" 等非字母或數字的符號 或者 在使用動態取值時,就一定要使用 "[]" 運算符。
3.EL表達式的取值範圍
pageScope、requestScope、sessionScope、applicationScope
如果沒有給定參數名的取值範圍,系統默認從page範圍中查找,找不到則找request,一次類推,都找不到時傳回null。
例如,存入一個session範圍的值:<% session.setAttribute("u", "hello,EL") %>
那麼,傳統方式取值:<% session.getAttribute("u") %>。使用EL表達式取值:${sessionScope.u} 或者 ${u}
4.EL表達式可以自動轉換類型
傳統代碼:
1<%2Stringage=request.getParameter("age");
3intagei=Integer.parseInt(age);
4out.println(age+10);
5%>
使用EL表達式:
1${user.age+10}5.EL表達式的內置對象
(1)與範圍有關的內置對象
pageScope、requestScope、sessionScope、applicationScope
(2)與輸入有關的內置對象
param 和 paramValues 用來獲取表單中提交的信息。前者返回 String 類型數據,後者返回 String[] 類型的數據。如 ${paramValues.name}。
(3)其他隱含對象
Cookie
header 如:${header["UserAgent"]} 獲取瀏覽器的版本信息
headerValues
initParam 如:${initParam.DBDriver} 獲取web.xml中配置的相關參數
pageContext 如:${pageContext.request.remoteAddr} 獲取用戶的IP地址
6.特別注意:
通過獲得的參數進行比較判斷時,要這樣比較:${param.name1 == param.name2}
empty 運算符用於判斷值是否爲 null 或 空 。 ${empty null} ${empty ""}