You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

JDK 17迁移后JSP内容不可见及请求映射缺失问题排查

JDK 17迁移后JSP无法显示及请求映射问题解决

问题概述

迁移至JDK 17后出现JSP内容无法显示,同时Spring MVC抛出请求映射未找到警告:

WARN [org.springframework.web.servlet.PageNotFound] (default task-4) No mapping for POST /VisitVerification/allmodal.ac
WARN [org.springframework.web.servlet.PageNotFound] (default task-5) No mapping for POST /VisitVerification/main.action

当前使用的依赖为Jakarta Servlet 6.0及JSTL 3.0系列:

<dependency>
    <groupId>jakarta.servlet</groupId>
    <artifactId>jakarta.servlet-api</artifactId>
    <version>6.0.0</version>
    <scope>provided</scope>
</dependency>

<dependency>
    <groupId>jakarta.servlet.jsp.jstl</groupId>
    <artifactId>jakarta.servlet.jsp.jstl-api</artifactId>
    <version>3.0.0</version>
</dependency>

<dependency>
    <groupId>org.glassfish.web</groupId>
    <artifactId>jakarta.servlet.jsp.jstl</artifactId>
    <version>3.0.1</version>
</dependency>

JSP中仍使用旧版标签库声明,询问是否需要修改:

<%@ taglib uri="http://www.springframework.org/tags" prefix="spring" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%
String ProfileName = (String)session.getAttribute("ProfileName"); 
%>

核心修复步骤

1. 必须更新标签库URI

Jakarta EE 9+(对应JSTL 3.0、Spring 6.x)已废弃原Java EE时代的标签库URI,需替换为Jakarta版本:

  • JSTL核心标签库:将http://java.sun.com/jsp/jstl/core替换为https://jakarta.ee/xml/ns/jakartaee/jstl/core
  • Spring标签库:Spring 6.x适配Jakarta后,URI已更新为https://www.springframework.org/tags

修改后的标签库声明:

<%@ taglib uri="https://www.springframework.org/tags" prefix="spring" %>
<%@ taglib prefix="c" uri="https://jakarta.ee/xml/ns/jakartaee/jstl/core" %>

2. 请求映射警告排查

JSP无法显示大概率和标签库失效导致页面渲染异常直接相关,先修复标签库后验证页面是否恢复。若仍存在映射警告:

  • 检查对应请求的Controller方法:确保使用Jakarta Servlet API(导入jakarta.servlet.*而非javax.servlet.*),且@RequestMapping路径与请求路径完全匹配(包括后缀.ac/.action)
  • 确认Spring MVC配置:检查DispatcherServlet的url-pattern是否覆盖这类后缀路径,或是否配置了路径匹配规则允许解析.ac/.action

3. 兼容性验证

  • 确保Spring版本为6.x或Spring Boot 3.x:旧版Spring不支持Jakarta Servlet 6.0
  • 若使用web.xml,需迁移为Jakarta版本:根元素改为<web-app xmlns="https://jakarta.ee/xml/ns/jakartaee">,替换所有javax.servlet相关配置为jakarta.servlet

内容的提问来源于stack exchange,提问作者c arivu

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.24 17:12:56