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

Servlet 版本與 web.xml 版本對應關係表:Tomcat 版本如何決定 Servlet 規格

     編輯:程式設計綜合問答

核心對應關係

Servlet 版本web.xml 版本對應 TomcatJava EE / Jakarta EE發布年份
6.06.010.1+Jakarta EE 9+2020
5.05.010.0Jakarta EE 82019
4.04.09.0Java EE 82017
3.13.18.0Java EE 72013
3.03.07.0Java EE 62009
2.52.56.0Java EE 52005
2.42.45.5J2EE 1.42003

web.xml 版本宣告範例

Servlet 3.0 (web-app_3_0.xsd)

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="https://java.sun.com/xml/ns/javaee"
         xmlns:xsi="https://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="https://java.sun.com/xml/ns/javaee 
         https://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
         version="3.0">
    <!-- 支援 @WebServlet 註解,可無 web.xml -->
</web-app>

Servlet 2.5 (web-app_2_5.xsd)

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="https://java.sun.com/xml/ns/javaee"
         xmlns:xsi="https://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="https://java.sun.com/xml/ns/javaee 
         https://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
         version="2.5">
    <!-- 需在 web.xml 註冊 Servlet -->
</web-app>

關鍵差異

特性Servlet 2.5Servlet 3.0+
註解支援❌✅ (@WebServlet, @WebFilter, @WebListener)
web.xml 必需是否 (metadata-complete="true" 可禁用掃描)
異步處理❌✅ (AsyncContext)
動態註冊❌✅ (ServletContext.addServlet)
multipart 解析需第三方✅ (@MultipartConfig)

實戰建議

  • Tomcat 7/8/9 專案:使用 3.0 或 3.1,啟用註解開發
  • 維護舊專案:保持 2.5 兼容,但建議升級
  • MyEclipse 新建專案時:手動修改 web.xml 版本為 3.0+
  • 避免混用:同一專案中 web.xml 版本與 Tomcat 支援的 Servlet 版本應一致

驗證方法

// JSP 中輸出當前 Servlet 版本
${application.getMajorVersion()}.${application.getMinorVersion()}
// 或 Servlet 中
getServletContext().getMajorVersion() + "." + getServletContext().getMinorVersion()

理解版本對應關係,能避免「註解不生效」、「啟動報錯」等經典坑。

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