【JavaWeb EL表示式&JSTL標籤庫 09】
一、表示式
1、什麼是EL表示式,表示式的作用是什麼
EL表示式的全稱是:Expression language 表示式語言
作用:EL表示式代替jsp頁面中的表示式指令碼在jsp頁面中進行資料的輸出。
#舉例演示 EL表示式和jsp的區別:
<%-- Created by IntelliJ IDEA. User: wufq Date: 2021/6/30 Time: 16:41 To change this template use File | Settings | File Templates. --%> <%@ page contentType="text/html;charset=UTF-8"language="java" %> <html> <head> <title>Title</title> </head> <body> <% request.setAttribute("key","value");%> jsp輸出表達式的值:<%=request.getAttribute("key")%><br> EL輸出表達式的值:${key} </body> </html>
執行結果:
jsp輸出表達式的值:value EL輸出表達式的值:value
從執行結果看,效果是一樣的,但是程式碼量EL表示式要少許多
並且如果獲取的值不存在時,EL輸出的是空串,jsp表示式指令碼輸出null值
EL表示式格式:${表示式}
2、EL表示式搜尋域資料的順序
EL表示式主要是在jsp頁面中輸出資料。主要是輸出域物件中的資料
當四個域(pageContext,request,session,application)中都有相同的key的資料的時候,EL表示式會按照四個域的從小到大的順序取進行搜尋,找到 就輸出
3、EL表示式輸出Bean(一個類就是一個bean物件)的普通屬性,陣列屬性,List集合屬性,map集合屬性
#案例演示:需求:輸出Person類中普通屬性,陣列屬性,list集合屬性和map集合屬性
Person類
public class Person { private String name; private String[] phones; private List<String> citis; private Map<String,Object> map; public int getAge(){ return 18; }
testPerson.jsp程式碼
<%@ page import="com.wufq.el.Person" %> <%@ page import="java.util.ArrayList" %> <%@ page import="java.util.List" %> <%@ page import="java.util.Map" %> <%@ page import="java.util.HashMap" %><%-- Created by IntelliJ IDEA. User: wufq Date: 2021/6/30 Time: 17:10 To change this template use File | Settings | File Templates. --%> <%@ page contentType="text/html;charset=UTF-8" language="java" %> <html> <head> <title>Title</title> </head> <body> <% Person person = new Person(); person.setName("El真好"); person.setPhones(new String[]{"110","119","120"}); List<String> list_city = new ArrayList<>(); list_city.add("北京"); list_city.add("上海"); list_city.add("深圳"); person.setCitis(list_city); Map<String,Object> maps = new HashMap<>(); maps.put("key1","value1"); maps.put("key2","value2"); maps.put("key3","value3"); person.setMap(maps); request.setAttribute("p",person); %> 輸出Person物件:${p}<br> 輸出person的name屬性:${p.name}<br> 輸出Person的phone陣列屬性:${p.pphones[2]}<br> 輸出Person的city集合的元素值:${p.citis}<br> 輸出Person的city集合內的個別元素值:${p.citis[2]}<br> 輸出Person的map集合內的元素值:${p.map}<br> 輸出Person的map集合內的個別元素值:${p.map.key2}<br> 輸出Person的age屬性:${p.age}<br> </body> </html>
3、EL表示式 -- 運算
語法:${運算表示式}
1)關係運算
2)邏輯運算
3)算數運算
4)empty運算
empty運算可以判斷一個數據是否為空,如果為空,則輸出true,不為空輸出false
5)三元運算
表示式1?表示式2:表示式3
如果表示式1的值為真,返回表示式2的值,為假返回表示式3的值
6).運算和[]運算子
點運算,可以輸出bean物件中某個屬性的值
[]運算,可以輸出有序集合中某個元素的值,並且[]中括號運算,還可以輸出map集合中key裡含有特殊字元的key的值
例如:
map.put("aaa","value"); request.setAttribute("map",map); ${map.aaa} ===>value 如果map.put("a.a.a","value"); key中有特殊字元。這時候就不能直接用點運算了,必須用[]來設定了 ${map['a.a.a']} ===>value
7、EL表示式的11個隱含物件
EL表示式中11個隱含物件,是EL表示式中自定定義的,可以直接使用(類似jsp內的9大內建物件,可以直接使用)
7.1 EL獲取四個特定域中的屬性
<% pageContext.setAttribute("key1","pageContext1"); pageContext.setAttribute("key2","pageContext2"); request.setAttribute("key1","request"); session.setAttribute("key1","session"); application.setAttribute("key1","application"); %> ${pageScope.key2}<br> ${requestScope.key1}<br> ${sessionScope.key1}<br> ${applicationScope.key1}<br>
7.2 pageContext物件的使用
- 獲取協議
- 獲取伺服器IP
- 獲取埠
- 獲取工程路徑
- 獲取請求方式
- 獲取客戶端IP地址
- 獲取會話的id編號