EL表達式

来源:http://www.cnblogs.com/tonghun/archive/2017/07/08/EL.html
-Advertisement-
Play Games

一 概述 1.EL Expression Language,表達式語言,一種不同於編程語言的語言,用於訪問對象或者為對象賦值,取代JSP頁面中嵌套的java代碼,使頁面風格統一。 2.語法格式 expression既可以是屬性,也可以是字面值,還可以是算術表達式、關係表達式、邏輯表達式、條件表達式等 ...


 

一 概述

1.EL

Expression Language,表達式語言,一種不同於編程語言的語言,用於訪問對象或者為對象賦值,取代JSP頁面中嵌套的java代碼,使頁面風格統一。

2.語法格式

${expression}

expression既可以是屬性,也可以是字面值,還可以是算術表達式、關係表達式、邏輯表達式、條件表達式等。

3.+

在EL表達式中,“+”只能用作算術運算,不能用來連接字元串。在進行算術運算時,EL嘗試將兩個數據轉化為數字,轉化不成功則拋出異常。

二 禁用EL

低版本的JSP頁面可能不支持EL,需要在頁面中禁用EL,根據作用範圍,禁用有3種方式:

1.禁用單個EL表達式:

\${expression};

2.禁用當前頁面中的EL:

<%@ page isELIgnored="true"%>

3.禁用應用程式中全部頁面或者指定頁面中的EL:

<jsp-config>
    <jsp-property-group>
        <url-pattern>*.jsp</url-pattern>
        <el-ignored>true</el-ignored>
    </jsp-property-group>
</jsp-config>

三 EL表達式作用

  • 可以將字面值輸出到頁面。
  • 訪問對象,可以訪問對象中的屬性、成員方法與靜態方法,不可訪問成員變數與靜態變數。屬性不存在時,輸出空字元串,而不是null。
  • 可以訪問作用域範圍內的屬性,訪問順序:page、request、session、application,由小到大。
  • 可以訪問環境變數:請求參數、初始化參數、消息報頭、cookie。
  • ${empty expression}:判斷對象是否為空,為空返回true。
  • ${not empty expression}:表達式非空值返回true。
  • ${list[0]}:訪問數組或者List集合中的元素,索引越界不會拋出異常或返回null,而是返回空字元串。
  • ${map.key}:訪問map集合。
  • 支持算術運算:a+b。
  • 支持關係運算:對比兩個參數的大小關係。
  • 支持邏輯運算:&& ! ||,判斷事件是否成立。
  • 支持條件運算:${條件表達式?表達式1:表達式2}:條件表達式為true,執行表達式1,否則執行表達式2。
  • EL表達式可以當做普通字元串插入JavaScript代碼中。

四 內置對象

1.使用規則

EL表達式在底層創建了許多對象,這些對象可以在JSP頁面中直接使用。

2.頁面上下文對象pageContext

  • 通過pageContext可以獲取其他內置對象,如request/session/out/exception/page/application,不可以獲得config。
  • 獲取到其他內置對象以後,可以獲取其屬性,如pageContext.request.contentLength。

3.作用域範圍的隱含對象

  • 包括:pageScope/requestScope/sessionScope/applicationScope。
  • 可以訪問作用域範圍內保存的數據,不可以訪問具有getter方法的屬性。

4.環境信息的隱含對象

  • param:訪問請求參數。
  • paramValues:當一個請求參數包含多個值時使用,以數組存儲。
  • header:用於獲取HTTP請求頭的值。
  • headValues:當一個請求頭包含多個值時使用,以數組存儲。
  • initParam:獲取初始化參數的值。
  • cookie:訪問Cookie對象。

五 自定義EL函數

1.自定義函數的一般步驟

  1. 創建一個類,在類中創建一個有返回值的靜態方法。
  2. 編寫標簽庫描述文件.tld,將編寫好的文件放在WEB-INF目錄下。

2.標簽庫描述文件

<?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"> <description>JSTL 1.1 functions library</description> <display-name>JSTL functions</display-name> <tlib-version>1.1</tlib-version> <short-name>fn</short-name> <uri>http://java.sun.com/jsp/jstl/myFunctions</uri><!-- 聲明時使用 --> <function> <description> Tests if an input string contains the specified substring. </description> <name>contains</name><!-- 調用時使用的名稱 --> <function-class>org.apache.taglibs.standard.functions.Functions</function-class><!-- 自定義類的全限定性類名 --> <!-- 無論是返回值,還是形參,都必須使用全限定性類名 --> <function-signature>boolean contains(java.lang.String, java.lang.String)</function-signature> </function> </taglib>

3.使用

首先在jsp頁面中引入標簽庫:

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

使用語法同EL相同:

${fn:functionName(arg...)}

4.作用

取代JSP頁面中的java代碼,使頁面風格統一,更加簡潔。

 


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 準備工作 VS Code下載地址:https://vscode.cdn.azure.cn/stable/379d2efb5539b09112c793d3d9a413017d736f89/VSCodeSetup-ia32-1.13.1.exe .NET Core 2.0 Preview下載地址:htt ...
  • 在建立好一個WebService後會有一個自帶的 現在可以試一下錄入記錄 在MVC項目中的控制器中調用 然後可以寫簡單的文件上傳下載 在在MVC項目中的控制器中調用 寫得不好,可能有錯請諒解,有錯請指出 ...
  • 筆者最近在和同事共同開發項目時,需要從他們提供的包含資料庫實體類型的類庫中讀取實體信息綁定到自己的項目中(但是都在同一個解決方案里),所以很直接的一種方式就是把項目中所有的實體都以 的形式加入到自己的 Context 中,但是這顯然十分麻煩,而且如果又新增或減少了實體,每次又得在Context中做修 ...
  • 今天開始,我就來說說asp.net core的新特性,今天就說說TagHelper標簽助手。雖然學習.net,最有幫助的就是microsoft的官方說明文檔了,裡面把一些使用說明都寫的非常清楚,但奈何.net core放入文檔微軟還沒來得及翻譯,對於英文不好的人來說簡直就是看的艱辛。所以今天就來學習 ...
  • 我們按照文件目錄的結構來為每個類寫入命名空間,當在一個類中需要實例化另外一個類時,IDE會幫我們寫入use namespace; 。這樣,我們在寫自動載入的時候,就不用考慮將要載入的類在哪一個文件目錄下了,只需要這樣寫: spl_autoload_register(function ($clas... ...
  • 數據結構:是指通過某種方式組織在一起的數據元素的集合 主要包括: 序列:主要介紹列表、元組、字元串 映射:字典 集合(set) 接下來,會對列表進行介紹 ...
  • 上一篇文章中不知道大家發現端倪木有,兩張照片對比很明顯發現第一張是信息很明顯的,第二張是亂碼的。 為什麼會出現這種情況?細心的童鞋可能發現是我們發送給伺服器的請求連接的數據不同: 第一張圖的信息是{"roomid":98284,"uid":271298361556770} 第二張圖的信息是{"uid ...
  • google已經將kotlin作為android開發的首選語言,然而我並不是android開發者,也不是java開發者,那麼我為什麼要學kotlin呢? 也許是心血來潮,也許是因為JB家出的編程語言必定會火,也許我只是JB家的忠實粉絲而已,不管怎麼樣吧,在此立一個flag,開啟我的kotlin學習之 ...
一周排行
    -Advertisement-
    Play Games
  • 示例項目結構 在 Visual Studio 中創建一個 WinForms 應用程式後,項目結構如下所示: MyWinFormsApp/ │ ├───Properties/ │ └───Settings.settings │ ├───bin/ │ ├───Debug/ │ └───Release/ ...
  • [STAThread] 特性用於需要與 COM 組件交互的應用程式,尤其是依賴單線程模型(如 Windows Forms 應用程式)的組件。在 STA 模式下,線程擁有自己的消息迴圈,這對於處理用戶界面和某些 COM 組件是必要的。 [STAThread] static void Main(stri ...
  • 在WinForm中使用全局異常捕獲處理 在WinForm應用程式中,全局異常捕獲是確保程式穩定性的關鍵。通過在Program類的Main方法中設置全局異常處理,可以有效地捕獲並處理未預見的異常,從而避免程式崩潰。 註冊全局異常事件 [STAThread] static void Main() { / ...
  • 前言 給大家推薦一款開源的 Winform 控制項庫,可以幫助我們開發更加美觀、漂亮的 WinForm 界面。 項目介紹 SunnyUI.NET 是一個基於 .NET Framework 4.0+、.NET 6、.NET 7 和 .NET 8 的 WinForm 開源控制項庫,同時也提供了工具類庫、擴展 ...
  • 說明 該文章是屬於OverallAuth2.0系列文章,每周更新一篇該系列文章(從0到1完成系統開發)。 該系統文章,我會儘量說的非常詳細,做到不管新手、老手都能看懂。 說明:OverallAuth2.0 是一個簡單、易懂、功能強大的許可權+可視化流程管理系統。 有興趣的朋友,請關註我吧(*^▽^*) ...
  • 一、下載安裝 1.下載git 必須先下載並安裝git,再TortoiseGit下載安裝 git安裝參考教程:https://blog.csdn.net/mukes/article/details/115693833 2.TortoiseGit下載與安裝 TortoiseGit,Git客戶端,32/6 ...
  • 前言 在項目開發過程中,理解數據結構和演算法如同掌握蓋房子的秘訣。演算法不僅能幫助我們編寫高效、優質的代碼,還能解決項目中遇到的各種難題。 給大家推薦一個支持C#的開源免費、新手友好的數據結構與演算法入門教程:Hello演算法。 項目介紹 《Hello Algo》是一本開源免費、新手友好的數據結構與演算法入門 ...
  • 1.生成單個Proto.bat內容 @rem Copyright 2016, Google Inc. @rem All rights reserved. @rem @rem Redistribution and use in source and binary forms, with or with ...
  • 一:背景 1. 講故事 前段時間有位朋友找到我,說他的窗體程式在客戶這邊出現了卡死,讓我幫忙看下怎麼回事?dump也生成了,既然有dump了那就上 windbg 分析吧。 二:WinDbg 分析 1. 為什麼會卡死 窗體程式的卡死,入口門檻很低,後續往下分析就不一定了,不管怎麼說先用 !clrsta ...
  • 前言 人工智慧時代,人臉識別技術已成為安全驗證、身份識別和用戶交互的關鍵工具。 給大家推薦一款.NET 開源提供了強大的人臉識別 API,工具不僅易於集成,還具備高效處理能力。 本文將介紹一款如何利用這些API,為我們的項目添加智能識別的亮點。 項目介紹 GitHub 上擁有 1.2k 星標的 C# ...