首页 > 代码库 > 初识Servlet

初识Servlet

一、 什么是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的基本原理,敬请期待~