1. 程式人生 > >九、EL表示式

九、EL表示式

EL表示式 一、 EL 全名為Expression Language。EL主要作用:  1、獲取資料     EL表示式主要用於替換JSP頁面中的指令碼表示式,以從各種型別的web域 中檢索java物件、獲取資料。(某個web域 中的物件,訪問javabean的屬性、訪問list集合、訪問map集合、訪問陣列),   2、執行運算     利用EL表示式可以在JSP頁面中執行一些基本的關係運算、邏輯運算和算術運算,以在JSP頁面中完成一些簡單的邏輯運算。${user==null}   3、獲取web開發常用物件     EL 表示式定義了一些隱式物件,利用這些隱式物件,web開發人員可以很輕鬆獲得對web常用物件的引用,從而獲得這些物件中的資料。   4、呼叫Java方法     EL表示式允許使用者開發自定義EL函式,以在JSP頁面中通過EL表示式呼叫Java類的方法。 二、例項 1、獲取資料   使用EL表示式獲取資料語法:"${識別符號}"   EL表示式語句在執行時,會呼叫pageContext.findAttribute方法,用識別符號為關鍵字,分別從page、request、session、application四個域中查詢相應的物件,找到則返回相應物件,找不到則返回”” (注意,不是null,而是空字串)。   EL表示式可以很輕鬆獲取JavaBean的屬性,或獲取陣列、Collection、Map型別集合的資料 例:
<body> <%     //將物件設定到pagecontext域物件裡     User u=new User("tom",20);     pageContext.setAttribute("user", u);
    //將集合設定到request域物件裡     ArrayList<User> list=new ArrayList<User>();     list.add(u);     request.setAttribute("list", list);     //設定map集合到pageContext域物件裡     Map<String,User> m=new HashMap<String,User>();     m.put("1", u);     m.put("2",new User("jia",22));     pageContext.setAttribute("map", m);     int
[]num={1,2,3,4,5};     pageContext.setAttribute("array", num);
%> 獲取key為user的物件:${user}<br/> 獲取該物件的name:${user.name}<br/> 獲取陣列:${array[0]}<br/> 獲取list集合:${list}<br/> 獲取list集合的第一個元素的age屬性${list[0].age}<br/> 獲取key為map的map集合:${map}<br/> 獲取key為1的物件的age屬性${map["1"].age} </body>
注意:在不同的域有相同的屬性名時,會根據從域中按照page、request、session、application的順序查詢 <%     session.setAttribute("name", "tom");     request.setAttribute("name", "jia"); %> < h1
>${name}</ h1>//jia 如果要輸出 tom需要這樣寫: < h1>${sessionScope.name}</ h1> 效果
<body>  <%      request.setAttribute("name","tom");  %>      <%--${name}等同於pageContext.findAttribute("name") --%>      使用EL表示式獲取資料:${name}  <hr>  <!-- 在jsp頁面中,使用el表示式可以獲取bean的屬性 -->  <%      Person p = new Person();        p.setAge(12);        request.setAttribute("person",p);    %>        使用el表示式可以獲取bean的屬性:${person.age}    <hr>    <!-- 在jsp頁面中,使用el表示式可以獲取bean中的屬性 -->    <%        Person person = new Person();        Address address = new Address();        person.setAddress(address);              request.setAttribute("person",person);    %>       ${person.address.name}     <hr>    <!-- 在jsp頁面中,使用el表示式獲取list集合中指定位置的資料 -->    <%        Person p1 = new Person();        p1.setName("tom");              Person p2 = new Person();        p2.setName("tom");              List<Person> list = new ArrayList<Person>();        list.add(p1);        list.add(p2);        request.setAttribute("list",list);    %>      <!-- 取list指定位置的資料 -->    ${list[1].name}      <!-- 迭代List集合 -->    <c:forEach var="person" items="${list}">        ${person.name}    </c:forEach>    <hr>    <!-- 在jsp頁面中,使用el表示式獲取map集合的資料 -->  <%       Map<String,String> map = new LinkedHashMap<String,String>();       map.put("a","a");       map.put("b","b");       map.put("c","c");       map.put("1","a");       request.setAttribute("map",map);   %>     <!-- 根據關鍵字取map集合的資料 -->     ${map.c}     ${map["1"]}     <hr>     <!-- 迭代Map集合 -->     <c:forEach var="me" items="${map}">         ${me.key}=${me.value}<br/>     </c:forEach>   <hr> </body> </html> 2、執行運算
<%@page import="com.web.el.User"%> <%@page import="java.util.ArrayList"%> <%@page import="java.util.List"%> <%@ page language="java" contentType="text/html;  charset=UTF-8"     pageEncoding="UTF-8"%> <%@ taglib prefix="c"  uri="
http://java.sun.com/jsp/jstl/core
"%> <html> <head> <title>el表示式運算子</title> </head> <body>     <h3>el表示式進行四則運算:</h3>     加法運算:${5+1}//不能拼接成字串只能相加${"5"+1}     <br /> 減法運算:${1-1}     <br /> 乘法運算:${1*4}     <br /> 除法運算:${10/3}     <br />     <h3>el表示式進行關係運算:</h3>     <%--${user == null}和 ${user eq null}兩種寫法等價--%>     ${user == null}     <br /> ${user eq null}     <br />     <h3>el表示式使用empty運算子檢查物件是否為null(空)</h3>     <%          List<String> list = new ArrayList<String>();          list.add("a");          list.add("b");          request.setAttribute("list", list);     %>     <%--使用empty運算子檢查物件是否為null(空) --%>     <c:if test="${!empty(list)}">          <c:forEach var="str" items="${list}">             ${str}<br />          </c:forEach>     </c:if>     <br />     <%          List<String> emptyList = null;     %>     <%--使用empty運算子檢查物件是否為null(空) --%>     <c:if test="${empty(emptyList)}">          這是一個空的list集合     </c:if>     <br />     <h3>EL表示式中使用二元表示式</h3>     <%          session.setAttribute("user", new User("jia",  20));     %>     ${user==null? "對不起,您沒有登陸 " : user.name}     <br />     <h3>EL表示式資料回顯</h3>     <%          User u = new User();          u.setGender("male");          //資料回顯          request.setAttribute("user", u);     %>     <input type="radio" name="gender" value="male"          ${u.gender=='male'?'checked ':''}>男               <input type="radio" name="gender" value="female"          ${u.gender=='female'?'':''} >女     <br /> </body> </html> 三、內建物件     
PageContext pageContext 是JSP頁面的上下文物件,代表了JSP頁面
Map pageScope 封裝了pageContext域物件的資料
Map requestScope 封裝了request域物件的資料
  Map sessionScope  封裝了session域物件的資料
Map applicationScope 封裝了application域物件的資料
Map param 封裝了表單提交的資料,Map的value型別是String
Map paramValues   封裝了表單提交的資料,Map的value型別是String
 Map header 封裝了請求頭,Map的value型別是String
  Map headerValues 封裝了請求頭,Map的value型別是String[]
Map cookie       封裝了客戶端帶來的cookie
   Map initParam 封裝了WEB應用的初始化引數
四、內建物件的使用 1、獲取路徑 ${pageContext.request.contextPath} 2、獲取key為username cookie的值 ${cookie.username.value} 3、獲取請求引數 ${param.usernmae}