2016-04-13 84 views
2

在Servlet中,我通过web.xml的init param标签发送初始化数据。为什么我需要重写init方法来读取参数,我可以通过我的doGet方法中的getServletConfig().getInitParameter("someName")来检索值!需要覆盖Servlet init方法

此外,与相同配置,我可以用这个方法访问初始化参数:request.getServletContext().getInitParameter("xyz");

为什么我会需要重写init方法,并确保超配置对象设置,以及等等等等?

+0

这只是他们设计它的方式。事后看来,除非他们计划使用'ServletConfig'包装器或类似的东西,否则似乎没有必要。 – EJP

回答

0

我认为它可以用于init资源或字段servlet,因为servlet init只在servlet被加载和卸载时发生(这很少发生)。它会从代码参数中为代码添加一些独立性,如果您只覆盖一次init-method init servlet,而不是每次有人向您的servlet发送请求时都可以更改您的参数

0

你覆盖init方法是不适合初始化参数,这是由它调用你的init方法超类中的方法的init(ServletConfig类配置)来完成的设置,由容器调用 -

public void init(ServletConfig config) throws ServletException { 
    this.config = config; 
    this.init(); 
} 

有调用超类的init方法也没有意义,因为它是空的 -

public void init() throws ServletException { 

} 

如果您希望在首次请求之前执行一些其他必需的代码,那么您将覆盖init方法。例如 - 创建数据库连接,设置一些日志记录细节等。如果这不适用于您的代码,您可以忽略它。