程序员社区

【Servlet-1】Servlet对象的生命周期

Servlet对象的生命周期

1.什么是生命周期?
表示一个Java对象从最初创建到最终被销毁,所经历的过程

2.Servlet对象的生命周期是谁来管理的?程序员可以干涉吗?
Servlet对象的生命周期javaweb程序员是无权干涉的,包括该Servlet对象的方法的调用,javaweb程序员也是无权干涉的。Servlet对象的创建,方法的调用,以及对象的销毁整个过程都是由web服务器来管理的。

3.默认状况下,Servlet对象在web服务器启动阶段不会实例化

4.描述Servlet对象生命周期
 1 用户在浏览器上输入URL地址:http://localhost/24_Servlet/testLifeCycle
 2 web容器截取请求地址路径:/24_Servlet/testLifeCycle
 3 web容器在容器上下文中找请求路径/24_Servlet/testLifeCycle对应的Servlet对象
 4 如果没有找到对应的Servlet对象
  4.1 通过web.xml文件,得到请求路径/testLifeCycle对应的Servlet完整类名
  4.2 通过简历机制,调用Servlet类的无参构造方法完成Servlet对象的实例化
  4.3 web容器调用Servlet对象的init方法完成初始化操作
  4.4 web容器调用Servlet对象的service方法提供服务
 5 如果找到对应的Servlet对象
  web容器直接调用Servlet对象的service方法提供服务
 6 web容器关闭的时候/webapp重新部署的时候/该Servlet对象长时间没有用户再次访问的时候,web容器会将该Servlet对象销毁,在销毁该对象之前,web容器会调用Servlet的destroy方法,完成销毁之前的准备。

5.总结:
 1 Servlet对象的构造方法只执行一次
 2 Servlet对象的init方法值执行一次
 3 Servlet对象的service方法,只要用户请求一次,就执行一次
 4 Servlet对象的destroy方法只执行一次
 5 init 方法执行的时候,Servlet对象已经创建好了
 6 destroy方法执行的时候,Servlet对象还没有销毁
 
6.若希望在web服务器启动阶段实例化Servlet对象,需要在web.xml文件中进行相关的配置

	<servlet>
        <servlet-name>testLifeCycle</servlet-name>
        <servlet-class>Servlet.ServletDemo1</servlet-class>
        <load-on-startup>1</load-on-startup>
    </servlet>
    <servlet-mapping>
        <servlet-name>testLifeCycle</servlet-name>
        <url-pattern>/testLifeCycle</url-pattern>
    </servlet-mapping>
    <servlet>
        <servlet-name>welcomServlet</servlet-name>
        <servlet-class>Servlet.ServletDemo2</servlet-class>
        <load-on-startup>0</load-on-startup>
    </servlet>
    <servlet-mapping>
        <servlet-name>welcomServlet</servlet-name>
        <url-pattern>/welcom</url-pattern>
    </servlet-mapping>

7.Servlet对象实例化之后,这个Servlet对象被存储到哪里了?
web容器是将该Servlet对象及url-parttern存储到Map集合中Map<String,Servlet>

8.服务器启动的时候就会解析各个webapp的web.xml,做了什么?
将web.xml文件中的url-parttern和Servlet完整类名存储到Map集合中Map<String,String>

赞(0) 打赏
未经允许不得转载:IDEA激活码 » 【Servlet-1】Servlet对象的生命周期

相关推荐

  • 暂无文章

一个分享Java & Python知识的社区