super.init(config)調用的原理

註明出處,做者:李佳web

https://blog.csdn.net/feijianxia/article/details/1711762.net

 

servlet的init(ServletConfig config)方法中會有一個super.init(config);其原理以下:
1.若是用戶不須要設置一些初始化操做,那麼init()方法的實現無關緊要,由於能夠從父類GenericServlet中繼承獲得.xml

2.若是用戶須要servlet經過<init-param>從web.xml中讀取initialization parameters或者configuration data,那麼就須要顯式實現init()方法.blog

3.GenericServlet 提供兩個overloaded形式的方法以下:
  public void init() throws ServletException
  public void init(ServletConfig) throws ServletException繼承

4.Servlet interface只定義一個init(ServletConfig)方法,並且servlet加載時必須被調用,但只在第一次加載被調用一次.servlet

5.GenericServlet實現了這個init(ServletConfig)方法,這個方法先保存ServletConfig reference,而後調用init()方法.it

6.若是用戶servlet實現init()方法並在其中填充本身須要初始化的信息,這個init()會被GenericServlet中的init(ServletConfig)方法調用.由於ServletConfig reference已經io

被保存,因此你能夠訪問web.xml中的<init-param>.class

7.若是用戶servlet實現init(ServletConfig),那麼就覆蓋了GenericServlet(父類)的init(ServletConfig)方法,所以,GenericServlet會調用子類的方法,而不會保存容器

ServletConfig reference,必須執行super.init(config);才能保存ServletConfig reference訪問web.xml中的<init-param>.

8.因此你有兩種方法初始化,以下:
第一種方法是
public class LoginServlet extends HttpServlet {
 public void init() throws ServletException {
 
 }
  //...Rest of Servlet
}
第二中方法是
public class LoginServlet extends HttpServlet {
 public void init(ServletConfig config) throws ServletException {
   super.init(config);
   // ...Remainder of init() method
 }
  //...Rest of Servlet
}

9.servlet初始化正常結束,才能處理處理用戶的請求,若是在初始化方法init()中出現錯誤,那麼須要throw a ServletException或者父類的UnavailableException.這會告訴

相關文章
相關標籤/搜索