关于servlet的init方法说明

Servlet的init方法在服务启动时被调用,用于初始化Servlet。GenericServlet的init()为空,实际工作在init(config)中完成,由容器如Tomcat调用并传入ServletConfig。重写init方法时应调用super.init(config),否则getServletConfig()将返回null。理解ServletConfig对理解和使用Servlet至关重要。
摘要由CSDN通过智能技术生成

servelt几个主要类的关系如下:

这里说明下为什么我们继承HttpServlet重写doGet()和doPost()后,用户访问时就会调用我们写的方法。实际上用户发送http请求后,由GenericServlet类的抽象方法service()来决定调用那种方法。由上图知HttpServlet继承了GenericServlet并实现了抽象方法service(),而service()方法中,实际上就是一个调度程序,选择性的调度doPost()/doPut()/doDelete()等方法。现在我们创建servlet继承了HttpServlet,然后重写了doPost()/doGet()方法,所以当service()方法选择调用doPost()时会调用我们重写后的方法。

 

对于init()方法,由GenericServlet类可以看到存在重载。由源码可以看到,init()方法什么都没做,是空的。但在init(conifg)方法中对其进行了调用。上图类关系中,有一点非常重要,大家看到GenericServlet实现了ServletConfig接口,而且ServletConfig是GenericServlet的一个成员变量,然后GenericServlet中对ServletConfig接口中方法的实现,都是通过这个成员变量来完成的。那么这个成员变量的值是怎么来的呢?在init(config)中代码如下:


                
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值