servlet的生命周期

来源:互联网 发布:fastjson解析json数组 编辑:程序博客网 时间:2024/06/09 14:50

㈠ 什么是servlet的生命周期?

    servlet容器如何去创建servlet对象、如何初始化、如何调用servlet对象的方法来处理请求,以及如何销毁servlet对象的整个过程。

 

㈡ Servlet生命周期分哪几个阶段

    ① 实例化

        ⑴ 什么是实例化?

            容器调用servlet的构造器,创建一个servlet对象。

 

        ⑵ 什么时候实例化?

            情况一:容器在收到请求之后,才会创建servlet对象。

            情况二: 容器启动的时候,就会创建servlet对象。

                    需要给servlet添加一个配置(web.xml)

                    <load-on-startup>1</load-on-startup>

                    参数要求是一个>=0的整数,值越小,优先级越高(先被实例化)。

            注意:

                servlet容器在默认情况下,对于每个servlet,只会创建一个实例。

 

    ② 初始化

        ⑴ 什么是初始化?

            servlet容器在创建好servlet对象之后,会立即调用该对象的init方法。

 

        ⑵ GenericServlet已经提供了init方法,一般情况下,我们不再需要写init方法了。

            GenericServlet提供的init方法是这样实现的:将容器提供的ServletConfig对象保存下来,并且提供了getServletConfig方法用来获得ServletConfig对象。

 

        ⑶ servlet的初始化参数

            step1, 使用<init-param>来配置初始化参数

                   <init-param>

                        <param-name>company</param-name>

                        <param-value>北京达内</param-value>

                   </init-param>

 

            step2,调用ServletConfig对象的getInitParameter方法获得参数值。

        

        ⑷ 如何实现自己的初始化方法?

            建议override init()方法。

 

        ⑸ init方法只会执行一次。

 

    ③ 就绪

        ⑴ 什么是就绪?

            servlet容器在收到请求之后,会调用servlet对象的service方法来处理请求。

 

        ⑵ HttpServlet的service方法是如何实现的?

            依据请求方式(get/post)分别调用doGet/doPost方法。可以override HttpServlet提供的doGet/doPost方法,也可以直接override  HttpServlet提供的service方法。

 

    ④ 销毁

        ⑴ 什么是销毁?

            servlet容器依据自身的算法,在不再需要servlet对象时,会调用该对象的destroy方法,然后,再删除该对象。

        ⑵ GenericServlet已经实现了destroy方法。我们可以重写该方法

        

        ⑶ 该方法只会执行一次。

 

㈢ servlet生命周期相关的接口与类

    ① Servlet接口

    init(ServletConfig config)

    service(ServletRequest req,ServletResponse res)

    destroy()

 

    ② GenericServlet抽象类

        实现了Servlet接口中的部分方法(init,destroy)

 

    ③ HttpServlet抽象类

        继承了GenericServlet,实现service方法。

        ServletRequest接口是HttpServletRequest接口的父接口

        ServletResponse接口是HttpServletResponse接口的父接口。

0 0
原创粉丝点击