关于servlet生命周期和相关接口的理解

1、实例化创建servlet对象

    由容器负责创建,默认情况下,请求到达容器,容器检检查是否有对象,没有则创建;对象创建的时机也可以在web.xml设置。

2、初始化

    如何初始化参数:

涉及servlet接口规定了5种方法,与生命周期相关的三种方法分别是:

init(ServletConfig config);service(ServletRequest req,ServletResponse res);destroy();

我们写的servlet类继承了HttpServlet抽象类,而HttpServlet继承了GenericServlet抽象类,GennericServlet抽象实现servlet接口,重写了init(ServletConfig config)和destroy()方法,注意抽象类并不一定要实现接口所有的方法。

其中GennericServle重写的init(ServletConfig config):

但是我们写的子类如何获取父类方法中局部变量?定义了全局变量ServletConfig config,但是被private修饰了,

所以不能直接被子类使用,幸运的是GennericServlet类提供了public修饰getConfig()方法,子类可以直接this.getConfig()获取该对象,取得web.xml文件配置的初始化参数。

如:

ServletConfig config=getServletConfig();
String value=config.getInitParameter("version");

其中version是在web.xml文件配置的参数名。

 

 

3、就绪

容器调用service();在底层,容器会根据请求方式调用doGet()或者doPost()方法,因此作为子类,可以重写service();也可以重写doGet()或者doPost()。建议使用前者,因为可以处理get和post两种请求。

注意servlet接口定义的service方法是:service(ServletRequest req,ServletResponse res);而不是我们重写的service(HttpServletRequest req,HttpServletResponse res);那是因为在父类HttpServlet中有两个service方法。


4、销毁

 

容器调用destroy();容器会根据自身的算法,判断出需要销毁的servlet对象。参考垃圾回收机制,这样才能释放资源空间,防止内存泄露。

 

 

 

 

 

 

 

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值