首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Java覆盖初始化(ServletConfig配置)

Java覆盖初始化(ServletConfig配置)
EN

Stack Overflow用户
提问于 2012-11-30 12:24:49
回答 3查看 26.9K关注 0票数 8

我正在尝试覆盖初始化(ServletConfig配置) method.My代码是:

代码语言:javascript
复制
 public void init(ServletConfig config) throws ServletException {
    ServletContext sc = getServletContext(); // ----- NullPointerException
}

这是在给NullPointerException。

如果我将其修改为:

代码语言:javascript
复制
   public void init(ServletConfig config) throws ServletException {
    ServletContext sc = config.getServletContext(); // ----- works fine
}

这可以很好地工作。我知道我们应该覆盖init()方法,而不是init(ServletConfig配置),但是

谁能给我一个合理的理由来解释为什么会发生这样的事情?

EN

回答 3

Stack Overflow用户

发布于 2012-11-30 12:43:29

发生这种情况的原因是,如果重写

代码语言:javascript
复制
     public void init(ServletConfig config) throws ServletException {
        super.init(config);
            ServletContext sc = getServletContext(); 
     }

只需覆盖下面的方法,GenericServlet.init(ServletConfig config)就会调用它,而不是覆盖init(ServletConfig)

代码语言:javascript
复制
 public void init() throws ServletException {
 ServletContext sc = getServletContext(); 
}
票数 2
EN

Stack Overflow用户

发布于 2012-11-30 12:41:24

因为在:

代码语言:javascript
复制
public void init(ServletConfig config) throws ServletException
{
    ServletContext sc = getServletContext();
}

您不会调用super.init(ServletConfig)。因此,ServletConfig不会存储在servlet实例中,后续对getServletConfig的调用将返回null。

票数 1
EN

Stack Overflow用户

发布于 2014-06-05 13:50:33

只需将超级初始化(Config)放在被覆盖方法的第一行

代码语言:javascript
复制
public void init(ServletConfig config) throws ServletException
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13638978

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档