【Java】Tomcat 10中无法正常使用Servlet

【Java】Tomcat 10中无法正常使用Servlet

问题描述

报错:请求的资源[/ch2/servletController/Controller]不可用
版本:Tomcat 10.0.12, jdk-17.0.1,Windows 10, IDEA

POM 文件中的依赖设置

<!-- https://mvnrepository.com/artifact/javax.servlet/javax.servlet-api -->
<dependency>
  <groupId>javax.servlet</groupId>
  <artifactId>javax.servlet-api</artifactId>
  <version>4.0.1</version>
  <scope>provided</scope>
</dependency>

Servlet文件中的包引用

import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

原因分析

Tomcat 10中把包名从以往版本的javax改成了jakart,而amaven导包的时候依旧使用原来的javax,导致Tomcat 10服务器的Servlet接口和我写的servlet文件不匹配,从而无法正常运行。

解决方法

  1. pom.xml文件中依赖更改。点击Load Maven Changes。

    <!-- https://mvnrepository.com/artifact/jakarta.servlet/jakarta.servlet-api -->
    <dependency>
      <groupId>jakarta.servlet</groupId>
      <artifactId>jakarta.servlet-api</artifactId>
      <version>5.0.0</version>
      <scope>provided</scope>
    </dependency>
    

  2. servlet文件中的包引用改为

    import jakarta.servlet.RequestDispatcher;
    import jakarta.servlet.ServletException;
    import jakarta.servlet.annotation.WebServlet;
    import jakarta.servlet.http.HttpServlet;
    import jakarta.servlet.http.HttpServletRequest;
    import jakarta.servlet.http.HttpServletResponse;
    

参考资料

  1. Tomcat 10中Servlet无法正常使用的解决办法 https://blog.csdn.net/qq_55069056/article/details/118105044
posted @ 2021-12-17 10:43  sleepyhermit  阅读(1606)  评论(0)    收藏  举报