精通
英语
和
开源
,
擅长
开发
与
培训
,
胸怀四海
第一信赖
锐英源精品原创,禁止全文或局部转载,禁止任何形式的非法使用,侵权必究
Java因为推出的早,在大型企业级网站里,占据了主流。在Java发展初期,没有各种各样的框架,经常用的就是Java语言自带的类,而Servlet就是期中之一。当我们访问一个网站,它是如何处理我们用户发送过去的请求呢?带着Servlet是什么这个疑问,我们引出今天的主角——Servlet。
Servlet是Java Web的三大组件之一,用来处理请求,服务器会把接受到的请求交给其处理,如图所示:
Servlet大致工作流程如下:
servlet有三种实现方式,分别是:
这三种方法中,我们通常是用第三种方式来完成我们的servlet,这是为什么呢?
我们接下来对这三种方式进行讲解,权衡利弊,大伙也就能明白为什么大多数人对第三种方式情有独钟
Servlet接口部分代码如下所示:
这里需要大家明确一个概念,我们的servlet中的方法大多数不由我们来调用,而是由Tomcat来调用,并且servlet的对象也不由我们来创建,由Tomcat来创建,但每个方法处理要处理的逻辑是我们程序员要做的事情。
在这个servlet接口提供的方法中,init方法在我们的servlet出生之后会调用一次,service方法是每次处理请求都会被调用,而destroy方法是临死之前会被调用一次。我们的servlet主要就是用来处理用户请求的,那无可厚非service可以说是我们每次编写servlet需要重点实现的方法,而其它的好多方法,如果我们用我们的第一种实现方式,有时候我们并不需要这些方法,但我们还是要去实现,不仅麻烦,而且多余。
接下来我们来看我们的第二种实现方式,genericservlet抽象类是servlet的实现类,他实现了Servlet中声明的所有方法,不过源码中显示,所有的方法都只是空实现。而且其中的Service方法还是一个抽象方法,等待我们继承它之后进一步实现。
这样我们就很好的解决了第一种servlet实现方式中的不足,这样看来这种方式是非常完美的了。但在这里我们再补充一个知识点,用户给服务器发送请求信息的时候,一般使用的是http协议,而这个协议有多种请求方式,其中最常用的就是GET和POST方式,而我们服务器在接受到不同的请求的时候,可能需要不同的逻辑处理,所以我们在处理用户请求的时候一般需要对用户的请求方式进行判断,分别处理,而这明显是与我们逻辑操作无关的繁琐工作,这样看来genericservlet也显得不那么完美了。正因为如此,才有了我们的第三种方式。
HttpServlet这个类继承了GenericServlet类,并且进一步实现了GenericServlet类中的抽象方法——Service方法。并且在Service方法中加入了对不同请求类型的判断,所以使用者只需要重写相应的请求方式所对应的方法即可。比如使用的是Get请求,那么我们只需要重写doGet方法即可。
其实Servlet会英语的朋友名称非常好记,Serv是服务的前缀,let有走起来的意思,也有小套件的意思。希望大家看过本文,对Serverlet是什么问题能够很好解决。
这里推出锐英源的Servlet开源汇总,会有国外内容翻译文章、Servlet使用技巧和一定的视频,欢迎同行交流。