1. 程式人生 > 其它 >【JavaWeb EL表示式&JSTL標籤庫 09】

【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編號