Servlet和JSP的生命周期
一 Servlet的生命周期 Servlet是运行在Servlet容器(有时候也叫引擎,是基于服务器和应用程序服务器的一部分,用于在发送的请求和响应之上提供网络服务,解码基于MIME的请求,格式化基于MIME的响应。常用的Tomcat,Jboss,weblogic都是servlet容器)中的,其生命周期由容器来管理。Servlet的生命周期通过java.servlet.Servlet接口
一 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生命周期相同。
更多推荐
所有评论(0)