EL表達式

1. 語法結構:

${expression}

2.EL存取器

點(.) : 一般用來訪問對象的屬性java

${user.id}

方括號([""]) : 一般用於檢索數組或集合的元素(當屬性名中包含特殊字符,如.或?等並不是字母或數字的符號,就必定要使用[])web

${user["my-name"]}

${user.name}

3.做用域

  • page request session application
  • ${username}:全局搜索

查找順序:express

①EL表達式中,若不包含任何EL隱式對象的標識符,都被自動假定爲引用存儲在某個做用域中。數組

②EL會依次檢查page request session application瀏覽器

③找到對應值,則當即返回,不在繼續查找cookie

④若沒有找到對應值,返回nullsession

4.EL的11個隱式對象

pageContext 
    |pageContext取得用戶請求或頁面的詳細信息
    |
    |-- ${pageContext.request.queryString}        取得請求參數
    |-- ${pageContext.request.requestURL}         取得請求的URL,不包括請求參數(http://localhost:8080/Demo/index.jsp)
    |-- ${pageContext.request.requestURI}		  取得URL的後半部分(/Demo/index.jsp)
    |-- ${pageContext.request.contextPath}        取得服務的web application 的名稱(/Demo)
    |-- ${pageContext.request.method}             取得HTTP 的方法(GET、POST)
    |-- ${pageContext.request.protocol}           取得使用的協議(HTTP/1.一、HTTP/1.0)
    |-- ${pageContext.request.remoteUser}         取得用戶名稱
    |-- ${pageContext.request.remoteAddr }        取得用戶的IP 地址
    |-- ${pageContext.session.new}                判斷session 是否爲新的
    |-- ${pageContext.session.id}                 取得session 的ID
    |-- ${pageContext.servletContext.serverInfo}  取得主機端的服務信息(Apache Tomcat/5.0.28)                      
    |
pageScope requestScope sessionScope applicationScope
    |與做用域一一對應的四個隱式對象
    |
    |--例:session.getAtribute("username") == ${sessionScope.username}
param paramValues 
    |與輸入有關的兩個對象
    |
    |--例1:request.getParameter(String name) == ${param.name}
    |--例2:request.getParameterValues(String name) == ${paramValues.name}
header headerValues
    |header 儲存用戶瀏覽器和服務端用來溝通的數據
    |headerValues 同一標頭名稱擁有不一樣的值,此時必須改成使用headerValues 來取得這些值
    |
    |-- ${header["User-Agent"]}    取得瀏覽器版本
cookie 
		
initParam
    |web.xml中配置:
    |<context-param>
    |	<param-name>testname</param-name>
    |	<param-value>testvalue</param-value>
    |</context-param>
    |
    |${initParam["testname"]}

5.EL運算符

算術運算符有五個: +、-、*或$、/或div、%或modapp

關係運算符有六個: ==或eq、!=或ne、<或lt、>或gt、<=或le、>=或gejsp

邏輯運算符有三個: &&或and、||或or、!或not函數

其它運算符有三個: Empty運算符、三目運算符

|-${empty param.name} 
    |-${A?B:C}

6.EL函數

須要引入

<%@taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn" %>

例:${fn:toUpperCase("Www.baidu.Com")}

更多須要查看jstl.jar中的fn.tld文件

7.自定義EL函數

1:建立EL表達式函數處理類, 每一個函數對應類中的一個靜態

2:建立tld文件,定義表達式函數

3:在web.xml中配置(可省略)

4:在jsp中導入並使用

7.1 建立處理類
//能夠選擇繼承TagSupport
public class ELtag{
	public static String reverse(String str){
		return new StringBuffer(str).reverse.toString();
	}
}
7.2 建立tld文件
<?xml version="1.0" encoding="GBK"?>  
<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>el</short-name>  
     
	 <!-- 定義函數:reverse -->  
    <function>  
        <name>reverse</name>  
        <function-class>com.java.main.util.Eltag</function-class>  
		
        <!-- 定義函數的對應方法 -->  
        <function-signature>  
            java.lang.String reverse(java.lang.String)  
        </function-signature>  
		
    </function> 
</taglib>
7.3 Web.xml中配置
<jsp-config>  
    <taglib>  
        <!-- 配置標籤的引用地址 JSP頁面中引用時使用-->  
        <taglib-uri>/eltag</taglib-uri>  
        <!-- 配置標籤的TLD文件地址 -->  
        <taglib-location>/WEB-INF/Eltag.tld</taglib-location>  
    </taglib>  
</jsp-config>
7.4 JSP中引入及使用
<%@ taglib uri="/eltag" prefix="el" %> 

${el:reverse("ad") }

禁用EL表達式:

<%@ page isELIgnored="true"%> 表示是否禁用EL語言,JSP2.0中默認的啓用EL語言.

還能夠在web.xml中配置<el-ignored>元素

<jsp-config>
    <jsp-property-group>
        <url-pattern>*.jsp</url-pattern>
        <el-ignored>true</el-ignored>
    </jsp-property-group>
</jsp-config>
相關文章
相關標籤/搜索