技術點10:EL表示式
阿新 • • 發佈:2020-11-13
EL 表示式
一、什麼是 EL 表示式,EL 表示式的作用?
EL 表示式的全稱是:ExpressionLanguage。是表示式語言。 EL 表示式的作用:EL 表示式主要是代替 jsp 頁面中的表示式指令碼在 jsp 頁面中進行資料的輸出。 因為 EL 表示式在輸出資料的時候,要比 jsp 的表示式指令碼要簡潔很多。示例如下:
頁面效果:
此時,它們輸出的格式好像沒什麼區別。如果輸出的鍵(key)找不到,會是什麼情況呢?
頁面效果如下:
我們發現,當key找不到的時候,表示式指令碼會輸出null值,而EL表示式會輸出空串。我們希望在頁面上展示的是空串而不是null值(使用者是不知道null的意思的
表示式指令碼怎樣才能輸出空串呢?
頁面效果如下:
從上面的結果來看,表示式指令碼輸出空串是一件非常繁瑣的事情。
EL表示式的格式:
${表示式}
二、EL 表示式搜尋域資料的順序
EL 表示式主要是在 jsp 頁面中輸出資料。 主要是輸出域物件中的資料。 當四個域中都有相同的 key 的資料的時候,EL 表示式會按照四個域的從小到大的順序去進行搜尋,找到就輸出。頁面效果如下:
三、EL 表示式輸出 Bean 的普通屬性,陣列屬性。List 集合屬性,map 集合屬性
3.1、輸出Bean的普通屬性
JavaBean如下:
EL表示式如下:
效果如下:
3.2、輸出Bean的陣列屬性
EL表示式如下:
頁面效果如下:
3.3、輸出Bean的List集合屬性
EL表示式如下:
頁面效果如下:
3.4、輸出Bean的Map集合屬性
EL表示式如下:
頁面效果如下:
我們在Person類中新增一個getAge()方法(不用新增age屬性):
EL表示式如下:
頁面效果如下:
總結:使用EL表示式輸出Bean的屬性時,起決定性因素的是Bean中的getXxx(),而不是具體的某個屬性。就算沒有這個屬性,只要有對應的getXxx()方法,也可以達到同樣的輸出效果。
四、EL 表示式——運算
4.1、關係運算
示例:
效果:
4.2、邏輯運算
示例:
效果:
4.3、算數運算
示例:
效果:
4.4、empty運算
empty 運算可以判斷一個數據是否為空,如果為空,則輸出 true,不為空輸出 false。 以下幾種情況為空: 1、值為 null 值的時候,為空 2、值為空串的時候,為空 3、值是 Object 型別陣列,長度為零的時候 4、list 集合,元素個數為零 5、map 集合,元素個數為零示例:
<body> <% //1.值為null的時候,為空 request.setAttribute("emptyNull", null); //2.值為空串的時候,為空 request.setAttribute("emptyStr", ""); //3.值是Object型別的陣列,長度為0的時候,為空 request.setAttribute("emptyArr", new Object[]{}); //4.List集合,元素個數為0 List<String> list = new ArrayList<>(); // list.add("abc"); request.setAttribute("emptyList", list); //5.Map集合,元素個數為0 Map<String, Object> map = new HashMap<>(); // map.put("key", "value"); request.setAttribute("emptyMap", map); %> ${ empty emptyNull } <br/> ${ empty emptyStr } <br/> ${ empty emptyArr } <br/> ${ empty emptyList } <br/> ${ empty emptyMap } </body>
效果:
4.5、三元運算
表示式 1?表示式 2:表示式 3 如果表示式 1 的值為真,返回表示式 2 的值,如果表示式 1 的值為假,返回表示式 3 的值。示例:
效果:
4.6、“.”點運算 和 [] 中括號運算子
① .點運算,可以輸出 Bean 物件中某個屬性的值。效果:
② []中括號運算,可以輸出有序集合中某個元素的值。 示例:效果:
③ 並且[]中括號運算,還可以輸出 map 集合中 key 裡含有特殊字元的 key 的值。 示例:效果:
五、EL 表示式的 11 個隱含物件
EL 表示式中的11 個隱含物件,是 EL 表示式中自己定義的,可以直接使用。5.1、EL 獲取四個特定域中的屬性
示例:
效果:
當4個域中有重複的鍵的時候:
效果:
如果我們要輸出其它的域中的資料,怎麼輸出呢?
示例:
效果:
5.2、pageContext 物件的使用
request.getScheme() :它可以獲取請求的協議 request.getServerName() :獲取請求的伺服器 ip 或域名 request.getServerPort() :獲取請求的伺服器埠號 getContextPath() :獲取當前工程路徑 request.getMethod() :獲取請求的方式(GET 或 POST) request.getRemoteHost() :獲取客戶端的 ip 地址 session.getId() :獲取會話的唯一標識示例:
效果:
示例:
效果:
5.3、EL 表示式其他隱含物件的使用
示例:
效果:
示例:
效果:
示例:
效果:
示例:
效果: