首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 網頁程式設計 >> JSP 程式設計 >> 關於JSP

解決 JSP 不支援 EL 表達式:web.xml 版本聲明與配置修正指南

     編輯:關於JSP

EL 表達式失效的根本原因與四種修復方案

JSP 頁面中 ${expr} 未被解析,核心原因在於 web.xml 的 Servlet 版本聲明決定了 EL 的預設行為。本文梳理各版本聲明語法並給出針對性修復方案。

各版本 web.xml 根元素聲明對照

版本聲明範例EL 預設
2.2 (DTD)<!DOCTYPE web-app PUBLIC "-//Sun...//DTD Web Application 2.2//EN" "https://java.sun.com/dtd/web-app_2_2.dtd">關閉
2.3 (DTD)<!DOCTYPE web-app PUBLIC "-//Sun...//DTD Web Application 2.3//EN" "https://java.sun.com/dtd/web-app_2_3.dtd">關閉
2.4 (XSD)<web-app xmlns="https://java.sun.com/xml/ns/j2ee" ... version="2.4" xsi:schemaLocation=".../web-app_2_4.xsd">開啟
2.5 (XSD)<web-app xmlns="https://java.sun.com/xml/ns/javaee" ... version="2.5" xsi:schemaLocation=".../web-app_2_5.xsd">開啟

方案一:升級至 Servlet 2.4+ 聲明(最徹底)

將 web.xml 根元素替換為 2.4 或 2.5 XSD 聲明,重啟應用即可全域啟用 EL,無需修改任何 JSP。

方案二:頁面級開啟 isELIgnored="false"

<%@ page isELIgnored="false" %>

放在 JSP 頂部,僅影響當前頁,適合無法修改 web.xml 的舊專案局部修復。

方案三:專案級 jsp-config 開啟

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

在 web.xml 中添加,對所有 JSP 生效,不升級 Servlet 版本聲明也能生效。

方案四:直接替換為 2.4 XSD 聲明片段(最快)

<web-app xmlns="https://java.sun.com/xml/ns/j2ee"
         xmlns:xsi="https://www.w3.org/2001/XMLSchema-instance"
         version="2.4"
         xsi:schemaLocation="https://java.sun.com/xml/ns/j2ee 
         https://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">

複製替換現有根元素即可,保留內部子元素不變。

版本選擇建議

  • 新專案:直接用 Servlet 3.1 / 4.0 / 5.0(對應 Spring Boot 2/3、Jakarta EE 8/9/10)。
  • 維護老專案:至少升級到 2.4 獲得預設 EL 支援。
  • Tomcat 版本對應:Tomcat 5.x→2.4,6/7→2.5/3.0,8/9→3.1/4.0,10→5.0/6.0。

驗證步驟

  1. 修改 web.xml 並保存。
  2. 重啟應用(或熱部署)。
  3. 訪問包含 ${param.name} 的 JSP,確認輸出為參數值而非原文。

掌握版本聲明與 EL 行為的對應關係,是 Java Web 開發者必備的基礎排查技能。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved