记首次发文
今天终于鼓起勇气开通了博客,之所以选择博客园安家,因为这里是程序员的家园,也是我常闲逛的地方,而我也正走在程序员的路上....
选择发文,其实内心纠结了很久,到底自己能坚持多久?好比我对编程的兴趣,不知是否会在某天变成乏味。更何况我并不是一个善于记录的人,拙笔是否会让自己成为唯一的读者?
第一次发文,还是留下点东西吧。最近几天都在学习Servlet,而面试中常会有问到Servlet生命周期的问题,今天就Servlet的生命周期做个总结吧。
servlet的生命周期
1)什么是servlet的生命周期?
servlet容器如何创建一个servlet对象,如何对该对象进行初始化,并且调用该对象的相应的方法
来处理请求及如何在不需要使用该对象时销毁该对象的整个过程。
a.实例化(创建servlet对象)
a1.什么时候实例化
第一种情况:容器在收到请求之后,会依据请求资源路径查找与之匹配的servlet对象是否存在,
如果不存在,则创建servlet对象,否则不会创建。
第二种情况:容器在启动的时候会先创建好某个servlet对象,需要对servlet添加
1 其值越小,优先级越高。
a2.如何实例化
调用缺省的构造器。
b.初始化
容器在完成servlet对象的创建之后,会立即调用该对象的init()方法
容器在调用init方法之前,会先创建好一个config对象(符合ServletConfig接口要求)
可以调用config.getInitParameter(String paraname)方法来访问servlet的初始化参数。
可以在web.xml文件里使用:(来获得参数值)
写在之前。
可以override init()方法,来实现自己的初始化逻辑。
c.就绪,处理请求
容器会调用service方法来
d.销毁
容器在删除servlet对象之前,会先调用destory()方法,该方法只会执行一次
2)声明周期相关的接口与类
a.Servlet接口
init(ServletConfig config):初始化
destroy():销毁
service(ServletRequest req,ServletResponse res):处理请求
b.GenericServlet抽象类
实现了init,destroy两个方法。这两个方法只会执行一次。
c.HttpServlet抽象类
继承了GenericServlet抽象类,实现了service方法。
该service方法会依据请求方式的不同分别调用doGet(),doPost()方法来处理。
doGet,doPost方法的默认实现是抛出一个异常。
doGet和doPost也是"钩子"
d.ServletConfig接口
e.ServletRequest接口
f.Servlet
浙公网安备 33010602011771号