Servlet init方法覆盖必要

时间:2016-04-13 07:40:28

标签: java servlets override init

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

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

为什么我需要覆盖init方法,并确保设置超类配置对象等等?

2 个答案:

答案 0 :(得分:0)

我认为它可以用于init资源或字段servlet,因为servlet init只在servlet加载和卸载时引起(这种情况很少发生)。它在代码中添加了一些与值参数相关的独立性,如果你只重写一次init-method你的init servlet,而不是每当有人向你的servlet发送请求时都不这样做,你就可以在代码中更改你的参数。

答案 1 :(得分:0)

您覆盖的init方法不是用于设置init参数,这是通过调用init方法的超类中的方法init(ServletConfig config)完成的,并由容器调用 -

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

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

public void init() throws ServletException {

}

如果您想在第一次请求之前执行其他一些代码,则可以覆盖init方法。例如 - 创建数据库连接,设置一些日志记录详细信息等。如果这不适用于您的代码,您可以忽略它。