国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

在Servlet的GenericServlet類中為什么有兩個init()方法

2019-11-14 21:36:52
字體:
來源:轉載
供稿:網友
在Servlet的GenericServlet類中為什么有兩個init()方法

想要搞清楚這件事情,必須先了解Servlet容器調用Servlet的過程。調用過程如下

首次訪問該Servlet1、調用init(ServletConfig config) 進行初始化,ServletConfig封裝了web.xml中<init-param>配置的初始化參數,它由Servlet容器創建,并通過該方法傳遞給當前serlvet2、調用service(ServletRequest req, ServletResponse res)方法處理客戶的請求3、調用destroy()方法銷毀給Servlet實例,當然這里只是為了說明完整流程,實際上destroy()方法不是在調用servlet完成后就銷毀。

后續訪問該Servlet1、調用service(ServletRequest req, ServletResponse res)方法處理客戶的請求2、調用destroy()方法銷毀給Servlet實例,當然這里只是為了說明完整流程,實際上destroy()方法不是在調用servlet完成后就銷毀。

從上面的調用過程來看,Serlvet容器僅關心帶參數的init方法init(ServletConfig config)、service(ServletRequest req, ServletResponse res)和destroy(),其他的額外方法都是附加產品,這樣也就說明不帶參數的init方法不是必須的,那為什么在GenericServlet抽象類中卻定義了該方法,意義何在呢?

我們先看下GenericServlet類中的兩個init方法的實現。public void init(ServletConfig config)throws ServletException{this.config = config;this.init();}public void init()throws ServletException{}從上面的實現來看,init(ServletConfig config)會調用不帶參數的init方法進行初始化該Serlvet實例,而不帶參數的init方法卻什么都不做。假設GenericServlet類只實現了init(ServletConfig config)方法,那么代碼應該如下public void init(ServletConfig config)throws ServletException{this.config = config;}假設某個子類繼承了上面只定義一個init方法的GenericServlet類,并且想再初始化時增加一些自己的初始化參數,那必須重寫GenericServlet類的init(ServletConfig config)方法,如下:publicclassTestextendsGenericServlet{ public int a = 0; public String b; public void init(ServletConfig config)throws ServletException{ super.init(config); //或者this.config = config; this.a = XXX; this.b = XXX; } public void service(ServletRequestreq,ServletResponseres)throws ServletException,java.io.IOException{ .... }}上面的這個實現類是沒問題的,我們可以正常使用getServletConfig()方法得到ServletConfig對象進行使用。但是假設開發過程中忘記了調用super.init(config); //或者this.config = config;這個語句,那么問題就大了,getServletConfig()將返回null,無法使用ServletConfig。所以GenericServlet就再定義了一個無參的init( )方法,子類只需繼承該方法即可。這樣就防止了類似問題發生。

來自為知筆記(Wiz)


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 如皋市| 务川| 阜康市| 明水县| 余江县| 德州市| 华阴市| 阿巴嘎旗| 吉首市| 区。| 留坝县| 资阳市| 天台县| 五河县| 金寨县| 偏关县| 双鸭山市| 西吉县| 泉州市| 梓潼县| 乌兰察布市| 会同县| 清镇市| 贡嘎县| 鹿泉市| 赣州市| 湖口县| 利津县| 柳江县| 定安县| 三明市| 灵石县| 左云县| 岳普湖县| 稷山县| 宜城市| 陆川县| 罗田县| 泰和县| 泗洪县| 武隆县|