Tomcat正常启动且项目已成功部署,但出现404错误。
HTTP状态 404 - 未找到package org.example;import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;/*** 这是一个Servlet类,需要实现Servlet类*/@WebServlet(urlPatterns = "/hello")
public class HelloServlet extends HttpServlet
{@Overrideprotected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException{//1.获取请求参数值String name = req.getParameter("name");//2.响应结果到浏览器resp.getWriter().write("Hello " + name + ",你好");//super.doGet(req, resp);}
}
这是因为我使用的是Tomcat 10.1.34版本,需要使用Jakarta EE而不是Java EE。
修改代码如下:
package org.example;import jakarta.servlet.ServletException; // 注意:jakarta,不是javax
import jakarta.servlet.annotation.WebServlet;
import jakarta.servlet.http.HttpServlet;
import jakarta.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpServletResponse;
import java.io.IOException;@WebServlet(urlPatterns = "/hello")
public class HelloServlet extends HttpServlet {@Overrideprotected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {String name = req.getParameter("name");resp.setContentType("text/html;charset=UTF-8");resp.getWriter().write("Hello " + name + ",你好");}
}
检查Maven依赖
确保pom.xml使用正确的依赖:
<dependency><groupId>jakarta.servlet</groupId><artifactId>jakarta.servlet-api</artifactId><version>6.0.0</version><scope>provided</scope>
</dependency>
重新构建和部署
在IntelliJ中:Stop服务器
Build → Rebuild Project
重新启动Tomcat
修改import语句后解决问题。