JavaWeb學習筆記之EL表達式

1.概述

EL,即Expression Language。在JavaWeb中屬於JSP技術。java

JSP中的表達式:Java腳本表達式<%=Java表達式%>;EL表達式${EL表達式}web

JavaWeb中最好不要在JSP中寫Java代碼,因此用EL表達式來替代Java表達式。數組

2.語法及用法

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

  • 1.點運算符:${stu.name},即調用域中stu對應的對象的name的讀屬性getName()。但,若stu在4個域中沒有綁定相應對象,那麼就在網頁上輸出空字符串(即什麼都不輸出)。

${stu.name}至關於:安全

<%  
Student stu=pageContext.getAttribute("stu");  
if(stu!=null) out.println(stu.getName());  
%>
  • 2.[]運算符:${stu['name']}或者${stu["name"]}。與點運算符做用同樣,但當索引或者名稱不符合Java名稱規範時(如,獲取數組中的某個值),只能用[]運算符。
  • 3.獲取集合中的元素:List按照索引來獲取元素:${obj.list[1]},Map按照指定的key來獲取元素:${obj.map.key}或者${obj.map['key']}

2.2邏輯和數學運算

  • 1.empty運算符:判斷一個對象是否爲null或者」」,是則返回true,不然返回false。也能夠判斷一個數組和集合,當數組或集合對象不是null,但對象中沒有原素也返回true。
  • 2.數學運算符:+-*/。如${i+1}
  • 3.三元運算符:${表達式?T表達式:F表達式}。如${a>1?a+1:a-1}
  • 4.不支持字符串鏈接。如${str+str},這是錯誤的。

2.三、11個內置對象

EL內置對象(或隱式對象),即在EL表達式中能夠直接調用的對象。總結起來就是有一個JSP對象,十個Map對象。cookie

  • pageContext:與JSP內置對象pageContext徹底同樣。
  • pageScope:當前頁面的域對象的Map。
  • requestScope:請求域對象的Map。
  • sessionScope:會話域對象的Map。
  • applicationScope:應用域對象的Map。
  • param:請求參數的Map,key爲請求參數名,value爲請求參數的值。
  • paramValues:請求參數(可重名)的Map<String,String[]),key爲請求參數名,value爲請求參數的值數組。
  • header:請求消息頭Map,key爲請求頭名,value爲對應的值。
  • headerValues:請求消息頭(可重名)的Map<String,String[]>,key爲請求名,value爲請求頭值數組。
  • cookie:封裝cookie的Map<String,Cookie>,key爲cookie的name屬性,value爲cookie對象自己。
  • initParam:初始化參數的Map,在web.xml中的context-param元素中定義的初始化參數。

2.4自定義EL函數。

第一步:定義一個有靜態方法的類。

1
2
3
4
5
6
7
package net.codingXiax.util;  
  
public class StringUtil{  
  public static String toUppercase(String str){  
     return "字符串";  
     }  
   }

第二步:配置tld。

在Web-INF目錄下(也能夠在其餘目錄下,該目錄下創建安全性更高),創建一個擴展名爲tld的xml文件。session

1
2
3
4
5
6
7
8
9
10
11
12
13
14
<?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目錄或類路徑下,此步可跳過。app

1
2
3
4
5
6
<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中使用。

注意應先用taglib指令引入該uri。jsp

1
2
3
4
5
6
7
8
9
<%@ taglib uri="/該tld所在位置" prefix="myfn" %>  
...  
<body>  
<%  
   pageContext.setAttribute("a","aaa");  
%>  
   ${myfn:toUppercase(a)}  
</body>  
...
相關文章
相關標籤/搜索