Servlet中@WebServlet("XXXX")注解无效,访问servlet报404错误

1、问题描述

  servlet使用注解配置,经检查无错误,如图: 

  

  tomcat正常启动,页面正常运行,当访问servlet时出现无响应的情况,控制台报错404,未访问到servlet。

  

   经检查,我的错误原因属于下边的第②种情况。

 

2、解决方案

打开web.xml检查web-app标签中的两个属性

①version是否大于3.0

  因为web-app标签3.0以上版本才可以使用servlet的注解的,这是必要条件。如果web-app版本低于3.0,可以去tomcat的这个路径:

  C:\Program Files\Apache Software Foundation\Tomcat 8.5\webapps\ROOT\WEB-INF  找到web.xml文件,打开,检查web-app标签版本,如果大于等于3.0,直接复制一份替换原有web-app标签就好了,或者直接用我的这个web-app标签去替换,版本为3.1

 

<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_3_1.xsd"
  version="3.1"
  metadata-complete="true">

 

②metadata-complete是否为false  

  该属性为true,则容器在部署时只依赖部署描述文件,忽略所有标注,如果不配置该属性,或者将其设置为false,则表示启动注解支持。当metadata-complete="false"时,web.xml和注解对于Servlet的影响同时起作用,两种方法定义的url-partten都可以访问到该Servlet,但是当通过web.xml定义的url-partten访问时,注解定义的属性将失效。所以如果你想用servlet注解来配置servlet的话,一定记得修改该属性为metadata-complete="false "。

 

 

 

 

 

posted @ 2019-06-04 22:43  Felix_9190  阅读(14971)  评论(5编辑  收藏  举报