Servlet中写了注解@WebServlet但访问servlet报404错误

Posted musecho

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Servlet中写了注解@WebServlet但访问servlet报404错误相关的知识,希望对你有一定的参考价值。

以前一直用的eclipse,web.xml文件自动生成的,没自己改过。

这次web.xml是先创建maven项目再添加web配置时,随便从一个web4.0项目里拷贝来的,然后就出问题了。

Servlet中写了注解@WebServlet("xxxx"),但访问servlet时报404错误。

(一)看了web的确是3.0以上的,没找到问题在哪,看了篇博客解决了:https://www.cnblogs.com/iCheny/p/10976735.html


  • 原web.xml(出问题的)

    <?xml version="1.0" encoding="UTF-8"?>
    <web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
             xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
             xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee
                          http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"
             version="4.0"
             metadata-complete="true">
    </web-app>
    
  • 用Servlet注解的话把metadata-complete改成false

    <?xml version="1.0" encoding="UTF-8"?>
    <web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
             xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
             xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee
                          http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"
             version="4.0"
             metadata-complete="false">
    </web-app>
    


(二)补充:

  • 如果项目名后来修改过了,要查看tomcat部署里的artifact是否和项目同名,不同名部署路径会出错。

    • 不同名:

    • 修改成同名的:

以上是关于Servlet中写了注解@WebServlet但访问servlet报404错误的主要内容,如果未能解决你的问题,请参考以下文章

Servlet3.0提供的@WebServlet注解引用参数详情介绍

关于servlet的@WebServlet注解

servlet3.0注解@WebInitParam和@WebServlet

注解WebServlet配置Servlet报404错误的原因

@WebServlet用注解来实现servlet和url的映射

Java---@WebServlet注解的使用