java

关注公众号 jb51net

关闭
首页 > 软件编程 > java > webservlet注解无效报404

webservlet注解无效访问servlet接口时报404解决办法

作者:还航

这篇文章主要介绍了webservlet注解无效访问servlet接口时报404的解决办法,如果在配置@WebServlet注解后出现404错误,通常是由于URL映射不正确或Servlet类没有正确加载,文中通过代码介绍的非常详细,需要的朋友可以参考下

一.如果用xml可以访问,注解出现404错误时,可能有以下原因

问题类型

错误现象

核心原因

解决关键步骤

404 错误(注解无效)

使用@WebServlet注解时访问路径返回 404,XML 配置正常。

Tomcat 安装路径包含中文,导致类加载和注解扫描异常。

1. 将 Tomcat 和项目路径改为全英文;2. 确认web.xml未禁用注解扫描(metadata-complete=false)。

500 错误(类缺失)

部署后报ClassNotFoundException: javax.servlet.http.HttpServlet。

Tomcat 10 + 基于 Jakarta EE 5.0,代码仍使用旧javax.servlet包,依赖不兼容。

1. 将所有javax.servlet导入替换为jakarta.servlet;2. 添加 Jakarta Servlet 5.0 依赖。

部署冲突(映射重复)

启动时报IllegalArgumentException,提示 URL 模式被重复映射。

同时使用@WebServlet注解和web.xml配置同一个 URL 路径,导致配置冲突。

统一配置方式:仅保留注解或仅保留 XML 配置,删除冲突的配置。

问题 1:@WebServlet 注解无效,404 错误

问题 2:500 内部错误,类缺失异常

Tomcat官方解释

Apache Tomcat ®

欢迎来到 Apache Tomcat® 10.x 软件下载页面。此页面提供获取 Tomcat 10.1.x 软件最新版本的下载链接,以及指向旧版本存档的链接。

 

不确定需要哪个版本?在 “哪个版本?” 页面上可以找到所实现的规范版本、所需的最低 Java 版本以及更多有用信息。

 

使用 Tomcat 10 及更高版本的用户应该注意,由于 Java EE 转移至 Eclipse 基金会过程中从 Java EE 过渡到 Jakarta EE,所有已实现 API 的主包已从 javax.更改为 jakarta.。这几乎肯定需要更改代码,以使应用程序能够从 Tomcat 9 及更早版本迁移到 Tomcat 10 及更高版本。现已开发出一种迁移工具来辅助这一过程

// 旧代码(错误)
import javax.servlet.ServletException;
// 新代码(正确)
import jakarta.servlet.ServletException;
<!-- 旧依赖(错误) -->
<dependency>
    <groupId>javax.servlet</groupId>
    <artifactId>javax.servlet-api</artifactId>
    <version>4.0.1</version>
</dependency>
<!-- 新依赖(正确,Tomcat 10对应Jakarta 5.0) -->
<dependency>
    <groupId>jakarta.servlet</groupId>
    <artifactId>jakarta.servlet-api</artifactId>
    <version>5.0.0</version>
    <scope>provided</scope>
</dependency>

问题 3:部署冲突,URL 模式重复映射

<!-- 删除以下内容 -->
<servlet>
    <servlet-name>PigServlet</servlet-name>
    <servlet-class>com.kaka.PigServlet</servlet-class>
</servlet>
<servlet-mapping>
    <servlet-name>PigServlet</servlet-name>
    <url-pattern>/pig</url-pattern>
</servlet-mapping>

二、关键知识点总结

三、预防措施与参考资料

四、总结

本次问题排查涉及路径兼容性、依赖版本适配和配置统一性三大核心问题。通过逐步定位日志错误、分析类加载冲突和配置规则,最终通过路径修正、依赖升级和配置统一解决了所有问题。后续开发中需注意 Tomcat 版本特性和规范变更,避免类似问题重复发生。

到此这篇关于webservlet注解无效访问servlet接口时报404解决办法的文章就介绍到这了,更多相关webservlet注解无效报404内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

您可能感兴趣的文章:
阅读全文