创建一个新的Web项目,命名为myservlet002
新建的项目目录如下图所示:
在这个新建的工程里,必须包含Java的jdk包以及Tomcat里的jsp包和servlet包
在src目录下新建包,在包里新建一个Java类MyServlet,并实现接口servlet
我们知道,在实现Servlet接口时,需要实现接口内的五个抽象方法,但是实在实际开发中,除了核心方法service,其他四个方法几乎不使用,因此通过实现Servlet接口来看,其代码较为冗余。
我们可以使用继承HttpServlet类的方式达到与实现Servlet接口相同的效果,而且代码看起来更加简洁
Servlet的层次接口
Servlet本质上是一套工具,Servlet接口只是其最顶端的一组接口,在Servlet下还有GenericServlet,GenericServlet下还有HttpServlet,即层次结构为:
Servlet–>GenericServlet–>HttpServlet
(1)在上面创建的包内新建一个Java类TestServlet,继承HttpServlet
(2)重写HttpServlet中的doGet()和doPost()方法
HTTP请求有很多种,常用的有四种:
GET–读取
POST–保存
PUT–修改
DELETE–删除
因此我们重写的两个方法:doGet()和doPost()
分别是用来处理GET请求和POST请求的
这个时候,我们就可以只通过doGet()和doPost()两个方法达到与实现Servlet接口相同的效果
(3)在MyServlet类(实现Servlet接口)的service方法内写入代码,并通过注解的方式实现
在TestServlet类(继承HttpServlet类)的doGet()方法内写入相同内容的代码,并通过注解的方式实现
(4)编译运行
再打开的浏览器地址输入在MyServlet类自定义的地址,回车
在浏览器地址输入在TestServlet类中自定义的地址,回车
效果相同
(5)从上面可以看出,通过继承HttpServlet类的方式比实现Servlet接口的方式更简洁,代码更精炼
总结
GenericServlet类实现了Servlet接口,同时为它的子类屏蔽了Servlet接口中不常用的方法,子类只需要重写service方法即可
HttpServlet类继承GenericServlet类,根据请求类型进行分发,GET进入doGet()方法,POST进入doPost()方法
开发者自定义的Servlet类只需要继承HttpServlet类,重写doGet()方法、doPost()方法即可