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.这会告诉

相关文章
相关标签/搜索