本文共 1285 字,大约阅读时间需要 4 分钟。
servlet的生命周期
容器如何去创建servlet对象,如何对其进行初始化处理,如何调用其方法来处理请求,以及如何销毁该对象的整个过程。
a.什么是实例化?
容器调用servlet的构造器,创建相应的对象。
b.什么时候实例化?
情况1:容器收到请求之后。
情况2:容器启动之后,立即创建。
<load-on-startup>1</load-onstartup>
参数值要求是一个大于等于0的整数,越小,优先级越高(即先创建)。
注:容器只会创建一个实例。
a.什么是初始化
容器在创建好servlet对象之后,会立即调用servlet对象的init方法。该方法只会执行一次。
b.GenericServlet的init方法是如何实现的
将容器传递过来的ServletConfig对象保存下来,并且提供了一个获得该对象的方法(getServletConfig),
c.如何实现自已的初始化处理逻辑
只需要override GenericServlet提供的init()方法。
d.初始化参数
step1,配置
<init-param>
<param-name>company</param-name>
<param-value>北京达内科技</param-value></init-param>
step2,读取
String ServletConfig.getInitParameter(String paramName);
a.什么是就绪
容器调用servlet对象的service方法来处理请求。
b.HttpServlet的service方法是如何实现的
依据请求类型(get/post)调用对应的doXXX方法(doGet/doPost)。注:
我们可以写一个servlet,继承HttpServlet,然后override doGet和doPost方法,或者也可以直接override service方法。
a.什么是销毁
容器在删除servlet对象之前,会先调用该对象的destroy方法。
b.该方法只会执行一次。1)Servlet接口
init(ServletConfig config)
service(ServletRequest req,SerletResponse res)
destroy()
2)GenericServlet抽象类
实现了Servlet接口中的部分方法(init,destroy)
3)HttpServlet抽象类
继承GenericServlet抽象类,实现了service方法。
4)ServletConfig接口
String getInitParameter(String paraName);5)ServletRequest接口是HttpServletRequest的父接口,ServletResponse接口是HttpServletResponse的父接口。
附UML图: