首页 > 其他 > 详细

初学Servlet时使用IDEA中 利用Tomcat 10.0.4 构建类servlet报错

时间:2021-04-01 00:18:37      阅读:131      评论:0      收藏:0      [点我收藏+]

先直接来看我的错误:

技术分享图片

 

 

我的原始代码:

利用servlet跳转到的java代码是这样的:

 

 

 1 import javax.servlet.ServletException;
 2 import javax.servlet.http.HttpServlet;
 3 import javax.servlet.http.HttpServletRequest;
 4 import javax.servlet.http.HttpServletResponse;
 5 import java.io.IOException;
 6 import java.io.PrintWriter;
 7 
 8 public class HelloServlet extends HttpServlet {
 9     @Override
10     protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
11 
12         //响应的类型
13         response.setContentType("text/html");
14         //获取响应的输出流
15         PrintWriter out = response.getWriter();
16         out.println("<html>");
17         out.println("<head>");
18         out.println("<title>Hello World!</title>");
19         out.println("</head>");
20         out.println("<body>");
21         out.println("<h1>Hello World!</h1>");
22         out.println("</body>");
23         out.println("</html>");
24     }
25 
26     @Override
27     protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
28         doGet(req,resp);
29     }
30 }

 

然后是对应的web.xml里的servlet配置:

 

<?xml version="1.0" encoding="UTF-8"?>

<web-app xmlns="https://jakarta.ee/xml/ns/jakartaee"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="https://jakarta.ee/xml/ns/jakartaee
                      https://jakarta.ee/xml/ns/jakartaee/web-app_5_0.xsd"
         version="5.0"
         metadata-complete="true">

<!-- 注册Servlet--> <servlet> <servlet-name>helloServlet</servlet-name> <servlet-class>HelloServlet</servlet-class> </servlet> <!-- 一个Servlet对应一个mapping(映射)--> <servlet-mapping> <servlet-name>helloServlet</servlet-name> <!-- 路径--> <url-pattern>/helloServlet</url-pattern> </servlet-mapping> </web-app>

 

 

接着又是pom.xml里引入的dependency:

 

 <!-- https://mvnrepository.com/artifact/javax.servlet/javax.servlet-api -->
    <dependency>
      <groupId>javax.servlet</groupId>
      <artifactId>javax.servlet-api</artifactId>
      <version>3.1.0</version>
<!--      下面是作用域。-->
<!--      <scope>provided</scope>-->
    </dependency>

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

 

 

 然后就这样,我运行在IDEA中运行Tomcat,浏览器自动跳转到index.jsp界面(我的是http://localhost:8080/javawebMaven01/),然后再手动敲到Servlet路径下(http://localhost:8080/javawebMaven01/helloServlet)。然后就出现了开头的问题。

 

解决问题:

原因:Tomcat10版本太新。

 

 

这是因为使用了最新的tomcat10,而tomcat10有个最大的变动就是Tomcat 10 m1将JavaEE也换成了Jakarta? EE
Jakarta? EE较以前的JavaEE有一个非常非常重要的更新:包名不再是"javax.servlet.“而是改成了"jakarta.servlet.”

 

tomcat10把 javax.servlet 都改为了jakarta.servle(这个方法我用了,只会报错,可能是只是改了包名,但其实仓库里没有这个包)

 

但是那两个博主说的不全,我最后想到的是改为最新的dependency,这样javax就会自己变为jakarta。所以还是去maven Repository中搜我们需要的最新的dependency,先是servlet-api:

 

技术分享图片

 

 

这里选中第四个,而不是第一个,因为第四个最新(2021),然后进去找到10.0.4版本的。其dependency代码如下:

 

<!-- https://mvnrepository.com/artifact/org.apache.tomcat/tomcat-servlet-api -->
<dependency>
    <groupId>org.apache.tomcat</groupId>
    <artifactId>tomcat-servlet-api</artifactId>
    <version>10.0.4</version>
</dependency>

 

 

然后是jsp-api:

 

技术分享图片

 

 

 依旧是第四个最新的那个(2021),点进去找到10.0.4版本的,代码如下:

 

<!-- https://mvnrepository.com/artifact/org.apache.tomcat/tomcat-jsp-api -->
<dependency>
    <groupId>org.apache.tomcat</groupId>
    <artifactId>tomcat-jsp-api</artifactId>
    <version>10.0.4</version>
</dependency>

 

把这两个代码放到项目的pom中,覆盖掉原来的那两个dependency,等待maven更新就好。

然后最会还有一步就是你写的那个Java类中导入到javax包要手动改为jakarta:

 

import jakarta.servlet.ServletException;
import jakarta.servlet.http.HttpServlet;
import jakarta.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.PrintWriter;

 

最会再运行Tomcat,跳转到网页后手动敲到你的servlet路径那,我修改完后截图如下:

 

技术分享图片

 

初学Servlet时使用IDEA中 利用Tomcat 10.0.4 构建类servlet报错

原文:https://www.cnblogs.com/workingsugar/p/14604127.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!