1. 程式人生 > 實用技巧 >技術點10:EL表示式

技術點10:EL表示式

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 表示式其他隱含物件的使用

示例:

效果:

示例:

效果:

示例:

效果:

示例:

效果: