哈尔滨模版网站建设,乔拓云建站平台,塘沽手机网站建设,页网站设计TomcatServlet运行后出现404错误解决方案 一、错误效果复现 后续的解决方案#xff0c;仅仅针对我遇到的情况。对不能涵盖大部分情况感到抱歉。
二、错误分析
先看看源代码#xff1f;
package com.example.secondclass.Servlet;
import java.io.*;
import jakarta.servl… TomcatServlet运行后出现404错误解决方案 一、错误效果复现 后续的解决方案仅仅针对我遇到的情况。对不能涵盖大部分情况感到抱歉。
二、错误分析
先看看源代码
package com.example.secondclass.Servlet;
import java.io.*;
import jakarta.servlet.ServletException;
import jakarta.servlet.annotation.WebServlet;
import jakarta.servlet.http.HttpServlet;
import jakarta.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpServletResponse;WebServlet(name login, value /login)
public class login extends HttpServlet {private String message;public void init() throws ServletException{message Hello World;}public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException{doPost(request, response);}public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException{request.getRequestDispatcher(/logok.html).forward(request, response);}public void destroy(){}
}问题出在 javax.servlet 和 jakarta.servlet 这两个包的不同版本兼容性上。
Servlet API 版本变更 在 Servlet 5.0 及以后的版本Tomcat 10 及以上javax.servlet 命名空间被迁移到了 jakarta.servlet这意味着 Servlet 4.0 及以下Tomcat 9 及以下 使用 javax.servlet.*Servlet 5.0 及以上Tomcat 10 及以上 使用 jakarta.servlet.* Tomcat 10 使用 Jakarta EE 看上面的图我使用的是Tomcat 10.1.36 默认支持 Jakarta EE 9它已经不再支持 javax.servlet所以如果代码仍然使用 javax.servletTomcat 无法找到相应的类导致 404 资源不可用的错误。
三、解决方案
3.1 方案 1升级代码到 Jakarta EE推荐
既然Tomcat版本很高10.0建议完全迁移到 jakarta.servlet即
确保项目中 javax.servlet 相关的依赖已移除只使用 jakarta.servlet
如果使用 Maven请检查 pom.xml确保使用 Jakarta 依赖
dependencygroupIdjakarta.servlet/groupIdartifactIdjakarta.servlet-api/artifactIdversion5.0.0/versionscopeprovided/scope
/dependency3.2 方案 2降级 Tomcat
如果想继续使用 javax.servlet可以换回 Tomcat 9因为它仍然支持 javax.servlet 下载 Tomcat 9 并配置到 IntelliJ IDEA 确保你的 pom.xml 依赖的是 javax.servlet-api dependencygroupIdjavax.servlet/groupIdartifactIdjavax.servlet-api/artifactIdversion4.0.1/versionscopeprovided/scope
/dependency