关于Tomcat10与Servlet的踩坑记录

Tomcat10与老版本servlet-api不兼容问题

在复习servlet老项目的时候,发现的问题
老项目环境 servlet3.0 Tomcat 8 jdk8 采用idea创建lib,引入jar包并加载到内存,没有使用maven
新环境 为Tomcat10
1、问题及解决方式
问题:启动项目时,可以启动,且没有Tomcat中log日志任何报错,也没有任何提示。但是浏览器报错,并且没有显示任何数据。
在这里插入图片描述
解决方式:

换用老版本的tomcat
或者将原有的servlet-api换成tomcat中lib文件夹下的servlet-api.jar或者上找到相应可行的jar包也可以。
老版本servlet的jar包引入是这样的
在这里插入图片描述
而新版的也是Tomcat10需要的是这样的,是jarkarta开头的不再是javax

在这里插入图片描述

2、问题分析

问题分析,首先要理解servlet和Tomcat的关系

什么是servlet

为了能让Web服务器与Web应用这两个不同的软件系统协作,需要一套标准接口,Servlet就是其中最主要的一个接口。

规定:

Web服务器可以访问任意一个Web应用中实现Servlet接口的类。

Web应用中用于被Web服务器动态调用的程序代码位于Servlet接口的实现类中。

SUN公司(现在被Oracle收购了……)制定了Web应用于Web服务器进行协作的一系列标准Java接口(统称为Java Servlet API)。

SUN公司还对Web服务器发布及运行Web应用的一些细节做了规约。SUN公司把这一系列标准Java接口和规约统称为Servlet规范。

Servlet是一种运行在服务器上的小插件。

Servlet容器是什么
在Servlet规范中,把能够发布和运行JavaWeb应用的Web服务器称为Servlet容器,他的最主要特称是动态执行JavaWeb应用中的Servlet实现类中的程序代码。

Tomcat是什么
Tomcat是Servlet容器,同时也是轻量级的Web服务器。这是它的两个身份!

Apache Server、Microsoft IIS、Apache Tomcat都是Web服务器。

Tomcat作为Web服务器时,主要负责实现HTTP传输等工作。

Tomcat作为Servlet容器时,主要负责解析Request,生成ServletRequest、ServletResponse,将其传给相应的Servlet(调用service( )方法),再将Servlet的相应结果返回。

由上可知Tomcat是承载servlet的一个容器,所以他们之间的许多东西必须要对应。因此老版本的servlet放在Tomcat10中驱动,Tomcat找不到它!!!所以才出现以上的问题。

关于Tomcat10的新特性可参考以下文章
https://blog.51cto.com/u_9177933/3197527

参考文章
https://blog.csdn.net/cws1214/article/details/48391617

  • 8
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值