zoukankan      html  css  js  c++  java
  • super.init(config)调用的原理

    注明出处,作者:李佳

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

    servlet的init(ServletConfig config)方法中会有一个super.init(config);其原理如下:
    1.如果用户不需要设置一些初始化操作,那么init()方法的实现可有可无,因为可以从父类GenericServlet中继承得到.

    2.如果用户需要servlet通过<init-param>从web.xml中读取initialization parameters或者configuration data,那么就需要显式实现init()方法.

    3.GenericServlet 提供两个overloaded形式的方法如下:
      public void init() throws ServletException
      public void init(ServletConfig) throws ServletException

    4.Servlet interface只定义一个init(ServletConfig)方法,而且servlet加载时必须被调用,但只在第一次加载被调用一次.

    5.GenericServlet实现了这个init(ServletConfig)方法,这个方法先保存ServletConfig reference,然后调用init()方法.

    6.如果用户servlet实现init()方法并在其中填充自己需要初始化的信息,这个init()会被GenericServlet中的init(ServletConfig)方法调用.因为ServletConfig reference已经

    被保存,所以你可以访问web.xml中的<init-param>.

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

    servlet容器初始化失败,不能处理任何请求.
    ---------------------
    作者:feijianxia
    来源:CSDN
    原文:https://blog.csdn.net/feijianxia/article/details/1711762
    版权声明:本文为博主原创文章,转载请附上博文链接!

  • 相关阅读:
    2019 ECfianl
    Codeforces Round #610 (Div. 2)
    IOS设计模式之三:MVC模式
    MVC3快速搭建Web应用(二)
    IOS设计模式之四:观察者模式
    MVC3快速搭建Web应用(一)
    Three20 NetWork
    IOS设计模式之一:单例模式
    IOS设计模式之二:Delegate模式
    写博客的意义
  • 原文地址:https://www.cnblogs.com/yibuyi-123/p/10564220.html
Copyright © 2011-2022 走看看