1. 程式人生 > 其它 >【Java】Tomcat 10中無法正常使用Servlet

【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