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 "。

 

 

 

 

 

本文转载自: https://www.cnblogs.com/iCheny/p/10976735.html

@WebServlet注解是Java EE中用于配置Servlet的一个注解。通过使用@WebServlet注解,可以将一个类声明为一个Servlet,并指定其URL映射,而无需在web.xml文件中进行配置。以下是一些常见的配置项: 1. **urlPatterns**:指定Servlet的URL映射。 2. **name**:指定Servlet的名称。 3. **loadOnStartup**:指定Servlet的加载顺序。 如果在配置@WebServlet注解后出现404错误,通常是由于URL映射不正确或Servlet类没有正确加载。以下是一个简单的示例: ```java import java.io.IOException; import javax.servlet.ServletException; import javax.servlet.annotation.WebServlet; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; @WebServlet(urlPatterns = "/hello", name = "HelloServlet", loadOnStartup = 1) public class HelloServlet extends HttpServlet { @Override protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { resp.getWriter().write("Hello, World!"); } @Override protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { doGet(req, resp); } } ``` 在这个示例中,@WebServlet注解将URL映射到/hello路径。当访问http://localhost:8080/yourapp/hello时,会执行HelloServlet的doGet方法,并返回"Hello, World!"。 如果出现404错误,可以检查以下几点: 1. **URL路径是否正确**:确保访问的URL路径与@WebServlet注解中的urlPatterns一致。 2. **Servlet类是否正确部署**:确保Servlet类已正确编译并部署到服务器。 3. **服务器是否正确启动**:确保服务器已正确启动,并且没有其他错误
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值