EL表達式

轉(zhuǎn)載http://codingxiaxw.cn/

1. 概述

EL,即Expression Language。在JavaWeb中屬于JSP技術(shù)。
JSP中的表達式:Java腳本表達式<%=Java表達式%>;EL表達式${EL表達式}。
JavaWeb中最好不要在JSP中寫Java代碼,所以用EL表達式來替代Java表達式。
語法及用法

2. 語法及用法

2.1獲取某個對象的值,并將其輸出到頁面上。

  • .運算符:${stu.name},即調(diào)用域中stu對應(yīng)的對象的name的讀屬性getName()。但,若stu在4個域中沒有綁定相應(yīng)對象,那么就在網(wǎng)頁上輸出空字符串(即什么都不輸出)。
    ${stu.name}相當于:
<%  
Student stu=pageContext.getAttribute("stu");  
if(stu!=null) out.println(stu.getName());  
%>
  • []運算符:${stu['name']}或者${stu["name"]}。與點運算符作用一樣,但當索引或者名稱不符合Java名稱規(guī)范時(如,獲取數(shù)組中的某個值),只能用[]運算符。
  • 獲取集合中的元素:List按照索引來獲取元素:${obj.list[1]},Map按照指定的key來獲取元素:${obj.map.key}或者${obj.map['key']}。

2.2邏輯和數(shù)學運算

  • empty運算符:判斷一個對象是否為null或者””,是則返回true,否則返回false。也可以判斷一個數(shù)組和集合,當數(shù)組或集合對象不是null,但對象中沒有原素也返回true。
  • .數(shù)學運算符:+-*/。如${i+1}
  • 三元運算符:${表達式?T表達式:F表達式}。如${a>1?a+1:a-1}
  • 不支持字符串連接。如${str+str},這是錯誤的。

2.3、11個內(nèi)置對象
EL內(nèi)置對象(或隱式對象),即在EL表達式中可以直接調(diào)用的對象。總結(jié)起來就是有一個JSP對象,十個Map對象。

  • pageContext:與JSP內(nèi)置對象pageContext完全一樣。
  • pageScope:當前頁面的域?qū)ο蟮腗ap。
  • requestScope:請求域?qū)ο蟮腗ap。
  • sessionScope:會話域?qū)ο蟮腗ap。
  • applicationScope:應(yīng)用域?qū)ο蟮腗ap。
  • param:請求參數(shù)的Map,key為請求參數(shù)名,value為請求參數(shù)的值。
  • paramValues:請求參數(shù)(可重名)的Map<String,String[]),key為請求參數(shù)名,value為請求參數(shù)的值數(shù)組。
  • header:請求消息頭Map,key為請求頭名,value為對應(yīng)的值。
  • cookie:封裝cookie的Map<String,Cookie>,key為cookie的name屬性,value為cookie對象本身。
  • initParam:初始化參數(shù)的Map,在web.xml中的context-param元素中定義的初始化參數(shù)。

2.4自定義EL函數(shù)。
第一步:定義一個有靜態(tài)方法的類。

package net.codingXiax.util;  
  
public class StringUtil{  
  public static String toUppercase(String str){  
     return "字符串";  
     }  
   }

第二步:配置tld。
在Web-INF目錄下(也可以在其他目錄下,該目錄下建立安全性更高),建立一個擴展名為tld的xml文件。

<?xml version="1.0" encoding="UTF-8"?>  
<taglib xmlns="http://java.sun.com/xml/ns/j2ee"  
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"  
        xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-jsptaglibrary_2_0.xsd"  
        version="2.0">  
        <tlib-version>1.0</tlib-version>  
        <short-name>myfn</short-name>  
        <uri>http://www.yrom.net/jsp/string/fn</uri>  
        <function>  
              <name>toUppercase</name>  
              <function-class>net.yrom.util.StringUtil</function-class>  
              <function-signature>java.lang.String toUpperCase( java.lang.String )</function-signature>  
        </function>  
   </taglib>

第三步:配置web.xml.
如果tld文件是在Web-INF目錄或類路徑下,此步可跳過。

<jsp-config>
<taglib>
    <taglib-uri>http://www.yrom.net/jsp/string/fn</taglib-uri>
    <taglib-location>/WEB-INF/myfn.tld</taglib-location>
</taglib>  
</jsp-config>

第四步:在JSP中使用。
注意應(yīng)先用taglib指令引入該uri。

<%@ taglib uri="/該tld所在位置" prefix="myfn" %>  
...  
<body>  
<%  
   pageContext.setAttribute("a","aaa");  
%>  
   ${myfn:toUppercase(a)}  
</body>  
...
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

推薦閱讀更多精彩內(nèi)容

  • 一、EL表達式簡介 1.EL全名為Expression Language。主要作用: 獲取數(shù)據(jù):EL表達式主要用于...
    yjaal閱讀 4,048評論 2 28
  • 大家好,我是IT修真院深圳分院java第4期學員,一枚正直善良的java程序員。今天給大家分享一下,修真院官網(wǎng)ja...
    肥胖癥患者閱讀 591評論 0 0
  • EL表達式 1、EL簡介 1)語法結(jié)構(gòu) ${expression} 2)[]與.運算符 EL 提供.和[]兩種運算...
    二把刀9527閱讀 12,993評論 0 2
  • 依然分享一篇文章 有個小鎮(zhèn)上來了一個馬戲團,他們在當?shù)卣心寂R時工,并提出以下幾種不同待遇: 做三個小時工作送一張外...
    夕曳不是西閱讀 185評論 0 0
  • 讀下面這首詩,根據(jù)你的理解寫一篇作文 要求:不少于600字 ,文體特征明顯(詩歌除外,不得出現(xiàn)真實的人名、地名、校...
    嫘醬閱讀 1,163評論 0 14