解读Servlet生命周期
Servlet的生命周期是由servlet的容器来控制的。分为3个阶段:初始化阶段、运行阶段、销毁阶段。---实例化
初始化阶段:
初始化阶段步骤:
Servlet容器加载servlet类,把它的. Class文件中的数据读到内存中。
Servlet容器创建servletConfig对象。
servletConfig对象包含了servlet的初始化配置信息
此外servlet容器还会使得servletConfig对象与当前的web应用的
servletContext对象关联。
用getServletConfig()获取servletConfig对象—GenericServlet类实现
Servlet容器创建servlet对象。
GenericServlet(抽象类)-实现init() destry() httpServlet (抽象类)-实现service() servlet
接口 Servlet容器调用servlet对象的init(ServletConfig config)方法。 初始化 参数(也是接口)
getInitParameter()
有自己的初始化:覆盖不带参数的init方法
通过初始化步骤,创建了servlet对象和servletConfig对象,并且servlet对象与servletConfig对象关联,而servletConfig对象又与当前对象的servletContext对象关联。当servlet容器完成servlet后,servlet对象只要通过getServletContext()方法就能得到web应用的servletContext对象。
注:servlet初始化的情况:
(1) 当web应用处于运行阶段时,特定的servlet被客户端首次
请求访问。
(2) 在web.xml文件中为servlet设置了 在servlet的配置当中, 标记容器是否在启动的时候就加载这个servlet。 当值为0或者大于0时,表示容器在应用启动时就加载这个servlet; 当是一个负数时或者没有指定时,则指示容器在该servlet被选择时才加载。 正数的值越小,启动该servlet的优先级越高。 (3) 当web应用被重新启动时,web应用中的所有servlet会在特定的时 间被重新初始化。 运行阶段 在这个阶段sevlet可以随时响应客户端的请求。当servlet容器接到访问特定的servlet请求时,servlet容器会创建针对与这个请求的servletRequest和servletResponse对象,然后调用service()方法,并把这两个对象当做参数传递给service()方法。Service()方法通过servletRequest对象获得请求信息,并处理该请求,再通过servletResponse对象生成响应结果。 HttpServletRquest 接口 【不管是post还是get方法提交,都会在service中处理,然后,由service来交由相应的 doPost或doGet方法处理,如果你重写了service方法,就不会再处理doPost或doGet了,如果重写sevice()方法,可以自己转向doPost()或doGet()方法】 注:当servlet容器把servlet生成的响应结果发送给客户后,servlet容器会销毁servletRequest和sevletResponse对象。 父类的service方法:根据·请求,自动调用get、post方法 覆盖父类的service方法时,用重写get/post方法 销毁阶段 当Web应用被终止时,servlet容器会先调用web应用中所有的servlet对象的destroy()方法,然后在销毁servlet对象。此外容器还会销毁与servlet对象关联的servletConfig对象。 在destroy()方法的实现中,可以释放servlet所占用的资源。如关闭文件输入输出流,关闭与数据库的连接。 注:sevlet的生命周期中,servlet的初始化和销毁只会发生一次,因此init()和destroy()方法只能被servlet容器调用一次,儿service()方法取决与servlet被客户端访问的次数。 练习: 因篇幅问题不能全部显示,请点此查看更多更全内容