一 Servlet的生命周期

    Servlet是运行在Servlet容器(有时候也叫引擎,是基于服务器和应用程序服务器的一部分,用于在发送的请求和响应之上提供网络服务,解码基于MIME的请求,格式化基于MIME的响应。常用的Tomcat,Jboss,weblogic都是servlet容器)中的,其生命周期由容器来管理。Servlet的生命周期通过java.servlet.Servlet接口中的init(),service()和destory()

方法表示。Servlet的生命周期有四个阶段:加载并实例化,初始化,请求处理,销毁。

   1.加载并实例化

         Servlet容器负责加载和实例化Servlet。当Servlet容器启动时,或者在容器检测到需要这个Servlet来响应第一个请求时,创建Servlet实例。当Servlet容器启动后,Servlet通过类加载器来加载Servlet类,加载完成后再new一个Servlet对象来完成实例化。类文件被更新后,也会重新装载Servlet。

   2.初始化

         在Servlet实例化之后,容器将调用init()方法,并传递实现ServletConfig接口的对象。在init()方法中,Servlet可以从web.xml中读取配置参数,或者执行任何其他一次性活动,在Servlet的整个生命周期,init()方法只被调用一次。

  3.请求处理

         当Servlet初始化之后,容器就可以准备处理客户端的请求了。当容器收到对这一Servlet的请求,就调用Servlet的service()方法,并把请求和响应对象,作为参数传递。当并行的请求到来时,多个service()方法能够同时运行在 独立的线程中。通过分析ServletRequest对象或者HttpServletRequest对象,service()方法处理用户的请求,并调用ServletResponse或者HttpServletResponse对象来响应。

   4. 销毁

          一旦Servlet容器检测到一个Servlet要卸载,这可能是因为要回收资源或者因为它正在被关闭,容易会在所有的Servlet的service()线程之后,调用destory()方法。然后,Servlet就可以进行无用存储单元收集清理。这样Servlet就被销毁了。这四个阶段共同决定了Servlet的生命周期。

 

二  JSP的生命周期

    JSP页面必须转换成Servlet,才能对请求进行服务,因此JSP的底层完全是Servlet。这样看来JSP 的生命周期就包括六个阶段:转换,编译,加载并实例化,初始化(_jspInit),请求处理(_jspService()调用),销毁(_jspDestory())。

   

    转换:就是web容器将JSP文件转换成一个包含了Servlet类定义的java源文件。

    编译:把在转换阶段创建的java源文件变异成类文件。

    JSP 生命周期其他的四个阶段跟Servlet生命周期相同。

 

 

  

 

Logo

权威|前沿|技术|干货|国内首个API全生命周期开发者社区

更多推荐