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
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...