一、 什么是Servlet
这里所讨论的Servlet,准确的说,应该是javax.servlet.http.HttpServlet,它是server收到请求之后调用的,专门用来响应HTTP请求,而且提供了响应请求的doGet()和doPost()方法. 它本质上来说就是一个java类,仅仅只是它是执行在server上的java类.它具有独立于平台和协议的特性,能够生成动态的Web页面. 它担当客户请求(Web浏览器或其它HTTP客户程序)与server响应(HTTPserver上的数据库或应用程序)的中间层。
Java Servlet API 定义了一个servlet 和Java使能的server之间的一个标准接口,这使得Servlets具有跨server平台的特性。 Servlet 通过创建一个框架来扩展server的能力,以提供在 Web 上进行请求和响应服务。当客户机发送请求至server时,server能够将请求信息发送给 Servlet,并让 Servlet 建立起server返回给客户机的响应。 当启动 Web server或客户机第一次请求服务时,能够自己主动装入 Servlet。装入后, Servlet 继续执行直到其他客户机发出请求。
二、 Servlet生命周期
先上图:
b) 生命全过程
i. 载入Servlet并实例化(new),同一时候初始化(init)
servlet第一次被请求载入时,server初始化这个servlet,即创建一个servlet对象,这对象调用init方法完毕必要的初始化工作。
ii. 处理请求(service→doGet/doPost)
诞生的servlet对象再调用service方法响应客户的请求。依据请求,service会调用doGet()或doPost()进行处理.
iii. 退出服务(destroy)
当server关闭时,调用destroy方法,消灭servlet对象。
c) 注意事项
i. Servlet仅仅实例化一次
ii. Init方法也仅仅运行一次
iii. Servlet不是线程安全的
即init方法仅仅被调用一次,即在servlet第一次被请求载入时调用该方法。当兴许的客户请求servlet服务时,Web服务将启动一个新的线程,在该线程中,servlet调用service方法响应客户的请求,也就是说,每一个客户的每次请求都导致service方法被调用运行。
三、 Servlet类与普通Java类的差别
Servlet是位于Web server内部的server端的Java应用程序,与传统的从命令行启动的Java应用程序不同,Servlet由Webserver进行载入,该Webserver必须包括支持Servlet的Java虚拟机,以下对Servlet类与普通Java类进行了一个简单的对照:
四、总结
新知识的学习我们总是想方设法与现有的旧知识进行类比,再高明一点的话能够直接用生活化的语言解释清楚。而我学习java不久,仅仅能从如今的知识中寻找曾经的影子,以下的这张图是近来学习Servlet时想到的将.NET与JAVA对照,不足之处还请大家不吝不吝赐教:
上图一对照就会发现它们尽管属于不同的平台,使用不同的语言,但本质就非常相像了,。依样画葫芦,以后上手的话就能够快非常多了。本篇博客仅仅限于对servlet的浅显认知,下篇将使用一个小样例说明Servlet的基本原理,敬请期待~