1、为什么会有Servlet的继承体系结构

我们知道,当我们写一个JAVA类并且实现Servlet接口时,必须重写Servlet接口的5个方法,这明显实在是太麻烦了!所以出现了Servlet接口的两个实现类:(子)GenericServlet、(孙)HttpServlet
继承链(从上往下):
Servlet
GenericServlet
HttpServlet

2、GenericServlet实现类(了解即可,将来不用)

该实现类将Servlet接口的除了service方法的其它方法都做了一个空实现,也就是说,如果我们定义一个JAVA类继承了GenericServlet,就可以只重写Service方法就可以了!大大简化了实现Servlet接口重写5个方法的麻烦!

3、HttpServlet(重点掌握!将来一直用)

既然有了GenericServlet这么方便的实现子类,那为什么又会出现继承自GenericServlet的实现类HttpServlet呢?
答:我们把思绪回到前端部分,当我们在html文件中写一个表单时,一定要写上action属性和method属性,那么,表单的数据都传到哪里去了呢?答案是传给实现Servlet的JAVA类,简称Servlet,而method属性有两个值,一个是get一个是post,代表了数据传输的两种方式,当我们在网页上填写数据后提交给Servlet后,Servlet就必须判断这些传输的方式是get传输还是post传输,也就是要在Service方法中编写代码来判断,而判断的代码无非就是if lese语句写来写去,重复度太大了!所以!专业的牛逼人就设计了一个叫做HttpServlet实现类,它继续重写了GenericServlet的Service方法,当传输方式为get时就调用doGet方法,当传输方式为post时,就调用doPost方法!
注意:专业一点解释:HttpServlet是对Http协议的一种封装,简化操作!

所以,当我们继承了HttpServlet时,就只需要重写doGet方法或者doPost方法,或者两个都重写即可,更加简单!!

4、演示

Servlet:
QQ图片20200708165600.png
资源文件:一般写在中间有蓝色圆圈的web目录下,并且表单的路径写成Servlet的资源路径
这里的传输方式就演示post!!!
QQ图片20200708165746.png
访问资源文件login.html:
QQ图片20200708170421.png
提交数据到Servlet路径后:
QQ图片20200708170423.png
看看控制台情况,是否调用了doPost方法:
QQ图片20200708170425.png