Servlet的init注意點
在Servlet的GenericServleta類中有兩個init()方法,兩個方法在使用的時候要注意:
如果我們直接透過實現Servlet介面來編寫一個Servlet類,就需要實現 Servlet介面中定義的5種方法,為了簡化Servlet的編寫,在javax.servlet包中,給我們提供了一個抽象的類 GenericServlet,它提供了除service()方法外的其他4種方法的簡單實現。GenericServlet類定義了一個通用的、不依賴於具體協議的Servlet,它實現了Servlet介面和ServletConfig介面。
如果我們要編寫一個通用的Servlet,只需要從GenericServlet類繼承,並實現其中的抽象方法service()。
GenericServlet類中,提供了兩種過載的init()方法 (Tomcat中的原始碼 ):
·public void init(ServletConfig config)throws ServletException{
this.config = config;
this.init();
}
·public void init()throws ServletException{
}
第一種init()方法是Servlet介面中init()方法的實現。這種方法中,首先將ServletConfig物件儲存在一個transient例項變數中,然後呼叫第二種不帶引數的init()方法。
通常我們在編寫整合自GenericServlet的Servlet類時,只需重寫 第一種不帶引數的init() 方法就可以了。
如果覆蓋了第二種init()方法,那麼應該在子類的該方法中,包含一句super.init(config) 程式碼呼叫。( super.init(config)即 GenericServlet .init(config) ,即 this.config = config和 this.init()兩句程式碼,如果沒有這兩句程式碼,由於Servlet中有這麼一句程式碼:this.getServletConfig().getServletName(), getServletConfig()中的程式碼是return config , 要是程式設計師改寫含引數的init方法時,要是忘了 super.init(config) ,那麼 config為空 ,則 getServletName()為空 ,就會出現空指標異常 ,所以為了防止這個錯誤,程式設計師們一般改寫init()這個方法,注:Tomcat呼叫的是 init(ServletConfig config)這個方法。 )
init(servletconfig config)
this.config = config
init();
重寫必須得 super.init(config)
不然不能使用 this.getServletConfig
當然也就不能用 getInitParameter();
我們只需要重寫 init();
如:
public void init(ServletConfig config) throws ServletException {
// TODO Auto-generated method stub
super.init(config);
String num=config.getInitParameter("num");
System.out.println("初始化數為:"+num);
}
()
[@more@]來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/24042997/viewspace-1034198/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Python中__init__方法注意點Python
- Servlet 的 init() 執行了兩次??!!為啥啊?Servlet
- vector的使用注意點
- 基於servlet+原生dbc的登入案例(含servlet知識點梳理)Servlet
- css注意點CSS
- sql中的*的使用注意點SQL
- Servlet基礎知識點整理Servlet
- 分享mysql注意點MySql
- reactjs 注意點ReactJS
- Golang switch case 的使用注意點Golang
- CSS中will-change的注意點CSS
- 安裝pybrain的注意點AI
- MySQL的clone(克隆)要注意的點MySql
- LEFT JOIN 需要注意的點(Presto)REST
- ios-10 推送中注意的點iOS
- Database Link 建立注意的兩點Database
- 手機網站的幾點注意網站
- App Store 稽核注意點APP
- 封裝framework注意點封裝Framework
- IDAPython指令碼分享 - 自動在.preinit_array .init .init_array下斷點Python指令碼斷點
- Init
- PHP 抽象類繼承抽象類時的注意點PHP 抽象類繼承抽象類時的注意點PHP抽象繼承
- 關於CORS 應該注意的幾點CORS
- golang split需要注意的一個點Golang
- wordpress的save_post鉤子注意點
- 介面文件設計的12個注意點
- 說點JSON使用的注意事項JSON
- Swift中URL處理中的注意點Swift
- 10-02、協議protocol的注意點協議Protocol
- 從技術走向管理的注意要點
- 使用Array.prototype.indexOf()的幾點注意Index
- JavaScript JavaScript與XML——“XPath”的注意要點JavaScriptXML
- 新手學習Django的十條注意點Django
- aix 上做rac的幾個注意點AI
- Linux上安裝oracle的注意點LinuxOracle
- 專攻知識小點——回顧JavaWeb中的servlet(二)JavaWebServlet
- servlet的設計原則,頭疼!懇請大家指點Servlet
- 型別轉換注意點型別