zoukankan      html  css  js  c++  java
  • 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 FilesApache Software FoundationTomcat 8.5webappsROOTWEB-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 "。

     

  • 相关阅读:
    JMS(面向消息中间件)
    ActiveMQ消息中间件知识汇总
    linux安装mysql常见命令
    结果集耗尽时,检查是否关闭结果集时常用sql
    Spring注解驱动开发之事务概念
    nginx 基础
    HTTP原理
    MYSQL----cmake 数据库出错
    php安装Phalcon模块
    docker报错 Failed to start Docker Application Container Engine.
  • 原文地址:https://www.cnblogs.com/iCheny/p/10976735.html
Copyright © 2011-2022 走看看