Servlet的工作原理及其生命周期

       Web成为当今主流的互联网web应用技术之一,而Servlet是Java Web技术的核心基础,因而掌握Servlet的工作原理是每一个Java Web技术开发人员的基本要求。

    一、  Servlet创建的两种方法:

  1. 客户端请求相应的Servlet时,创建Servlet实例;
  2. 通过在web.xm中配置load-on-startup创建servlet实例,语法为:在<Servlet></Servlet>之间添加<load-on-startup>1</load-on-startup>,这种方法在web容器启动时,就创建Servlet实例;

   二、Servlet运行时一般都遵循如下生命周期:

  1. 创建Servlet实例;
  2. Web 容器调用servlet的init()方法,对Servlet进行初始化;
  3. Servlet初始化后,就一直存在于容器中,用于响应客户端请求,根据客户端的请求方式,调用Servlet的service()方法,通过service方法去调用相应的doxxx方法;
  4. web容器销毁servlet时,调用Servlet的destroy方法,通常在关闭web容器时销毁servlet

   三、Servlet的工作原理:

        首先,客户端发出一个请求,servlet调用service方法对请求进行响应,service()方法对请求方式进行匹配,选择调用doGet,doPost等这些方法,然后再进入对应的方法中调用逻辑层的方法,对客户做出响应。

        在Servlet接口和GenericServlet中是没有doGet和doPost等方法的,HttpServlet中定义了这些方法,但都返回的是error信息,所以,我们每次在定义一个Servlet的时候,都要实现doGet或doPost方法,每个自定义的servlet都必须实现Servlet接口,Servlet接口中定义了5个方法,其中比较重要的三个方法涉及到servlet的生命周期,分别是上面提到的init()方法,service()方法,destroy()方法,GenericServlet是一个通用的,不特定与任何协议的Servlet,他实现了Servlet接口,而HttpServlet继承于GenericServlet,因此HttpServlet也实现了Servlet接口,所以我们自己定义Servlet的时候只需要继承HttpServlet即可,Servlet接口和GenericServlet是不特定于任何协议的,而HttpServlet是特定于Http协议的类,所以HttpServlet实现了service()方法,并将请求ServletRequest和ServletResponse强制转换成HttpRequest和HttpResponse。

      Servlet响应请求阶段:对于用户到达Sevlet请求,Servlet容器会创建特定于这个请求的ServletRequest和ServletResponse对象,然后调用servlet的service方法,service方法从ServletRequest对象获取用户请求信息,处理该请求,并通过ServletResponse对象对客户做出响应

      Servlet终止阶段:当Web应用被终止或Servlet容器终止运行,或Servlet容器重新装载Servlet实例时,Servlet容器会先调用Servlet的destroy()方法,在destroy()方法中可以释放掉servlet所占用的资源。

对Servlet的更多了解可以参考http://www.ibm.com/developerworks/cn/java/j-lo-servlet/

猜你喜欢

转载自hpuzhuhai.iteye.com/blog/1958329
今日推荐