Maven部署Servlet项目到Tomcat 页面404
在努力学习java后端知识过程中遇到的第一个半天左右时间才解决的难题,Maven部署Servlet项目到Tomcat ,使用注解@WebServlet配置访问路径,启动服务器后显示404。
使用maven骨架构建了webapp项目后,又手动配置了Tomcat服务器,并在pom.xml文件中配置了下面的servlet坐标:
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<version>3.1.0</version>
<scope>provided</scope>
</dependency>
随后在java文件夹下编写了一个十分简单的demo,只对service函数进行了重写:
import jakarta.servlet.*;
import jakarta.servlet.annotation.WebServlet;
import java.io.IOException;
@WebServlet("/demo1")
public class ServletDemo1 implements Servlet {
@Override
public void init(ServletConfig servletConfig) throws ServletException {
}
@Override
public ServletConfig getServletConfig() {
return null;
}
@Override
public void service(ServletRequest servletRequest, ServletResponse servletResponse) throws ServletException, IOException {
System.out.println("qiuqiule");
}
@Override
public String getServletInfo() {
return null;
}
@Override
public void destroy() {
}
}
随后启动服务器,访问http://localhost:8080/testservlet/demo1显示:
从网上找了解决方案,一般是</web-app>将metadata-complete属性改为false没什么用
开了新项目重构也没用,最终解决办法是:
servlet.jar版本太低,里面的接口失效,命名空间由javax变成了jakarat,应该把上面pom.xml的配置改成:
<dependency>
<groupId>jakarta.servlet</groupId>
<artifactId>jakarta.servlet-api</artifactId>
<version>5.0.0</version>
<scope>provided</scope>
</dependency>
然后重启服务器,页面不再404了,完结撒花,困扰了一下午————————