详解servlet中init()两个方法

init()方法为什么有两个?

了解GenericServlet

init()两个方法原因


了解GenericServlet

对于init为什么有两个方法,我们首先需要了解GenericServlet,
GenericServlet是Servlet接口的实现类。为了避免代码冗杂,如果我们
每一个类都去实现Servlet接口,那么就要去实现Servlet里面的5种方法,
但是我们知道,只有service()方法才是我们经常使用的,init()方法只有在客户提出请求访问时
才会被创建一次,也就是我们通常所说的“单例”,而destroy()方法只有
在关闭服务器的时候才会被执行,所以针对于此,我们实现了利用GenericServlet
来实现Servlet接口,以后在创建一个类的时候就可以直接继承GenericServlet
,也就是通常所说的适配器。

GenericServlet部分源码

 

init()两个方法原因

所以归结回来,init()为什么会有两个方法,因为GenericServlet里面的
init方法里面有ServletConfig对象,
这个对象是tomcat服务器首先创建的,然后再去调用init方法,
将ServletConfig对象传给了init()方法
然后这个对象目前在init方法参数上属于局部变量,
但是这个对象肯定以后要在service方法中使用,
所以我们要将其变为成员变量,再加一个get函数,
以后调用get函数就可以使用该对象了。
但是我们在继承GenericServlet的一个子类里面,
如果我们需要重写init方法,子类就覆盖了
GenericServlet的init方法,
那么在GenericServlet里面this.config=config代码就不试用了,
也就是说
GenericServlet的实例变量config的值为null,
那么所有依赖config的方法都不能使用了。为了避免此种情况,
我们会在GenericServlet里面再写一个无参的init方法,
那么就在继承的那个类重写这个无参的init方法,就不会出现我们上述
所说的情况了

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值