Servlet详解之两个init方法的作用
在Servlet中?javax.servlet.GenericServlet類 繼承自java.lang.Object 實現(xiàn)了Serializable,,servlet ,ServletConfig 三個接口 被繼承對象javax.servlet.http.HttpServlet
(這是我們常用的一個類)
?
但仔細看GenericServlet的API,會發(fā)現(xiàn)有兩個init方法 void init()? void init(ServletConfig config)? 而在Servlet接口中只有一個void init(ServletConfig config)?方法?
在此做一下解釋:
?
先看一下官方說明: void init()? A convenience method which can be overridden so that there's no need to call super.init(config).?
void init(ServletConfig config)? Called by the servlet container to indicate to a servlet that the servlet is being placed into service.?
?
看一下這兩個函數(shù)的源碼:GenericServlet.class
?
[java] view plain copy print??
?
?
[java] view plain copy print??
?
可以看到有參的init方法又調(diào)用了無參的init方法,這是什么原因呢。 補充一句,Tomcat默認調(diào)用的是有參的。
如果你曾復寫過init()方法,你應(yīng)該能看出些端詳 如果我們在想調(diào)用init方法時執(zhí)行一些操作,那怎么辦呢,只要我們復寫無參的init方法,tomcat在調(diào)用完有參的init方法時調(diào)用無參的init方法,這樣兩個操作都執(zhí)行了。而且我們也不用寫super.init();試想一下,如果沒有無參的init方法,那我們復寫有參的init方法時忘記了些super.init(config)方法,那么config就不能初始化了,而這樣設(shè)計即使我們不調(diào)用super的方法,也不會出問題。何樂而不為呢!
轉(zhuǎn)載于:https://www.cnblogs.com/firstdream/p/7907508.html
創(chuàng)作挑戰(zhàn)賽新人創(chuàng)作獎勵來咯,堅持創(chuàng)作打卡瓜分現(xiàn)金大獎總結(jié)
以上是生活随笔為你收集整理的Servlet详解之两个init方法的作用的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 农行万事达燃梦信用卡可以在国内用吗?不能
- 下一篇: 广发银行信用卡商户分期手续费多少?怎么收