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語句后解決問題。