Servlet中@WebServlet("XXXX")注解无效,访问servlet报404错误
2024-08-31 22:49:04
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 "。
最新文章
- 在C#里面给PPT添加注释
- (转载)(收藏)OceanBase深度解析
- 游戏对象消失三种方法的区别?(enabled/Destroy/active)
- UnitTesting中的ClassInitialize,ClassCleanup,TestInitialize,TestClearup
- 微信Android客户端架构演进之路
- C#代码反编译 得到项目可运行源码
- 利用 Composer 一步一步构建自己的 PHP 框架(四)——使用 ORM
- jquery 图片上传本地预览V1.2
- python3 列表 函数
- Fatal error: Class ‘mysqli’ not found in解决办法
- 在iOS中获取UIView的所有层级结构 相关
- ThinkPhp模板转Flask模板
- SSM增删改查
- vs2017 创建虚拟目录失败 http//locXXXXXX,vs2015 无法访问IIS源数据
- css 单位px、em、rem、vh、vw、vmin、vmax区别
- 用CSS里的 viewport-fit 标签应对iPhone X 的刘海
- R语言中知识点总结(二)
- oracle schema 白话文详解
- 简单版nginx lua 完成流量上报于中间件
- windows 静态IP设置举例