当servlet有Construtor时,为什么我们需要在servlet中使用Init()方法?

时间:2014-04-28 05:20:04

标签: java servlets

java中的

构造函数用于初始化为什么我们需要init()进行初始化....这个问题是在面试中提出的

7 个答案:

答案 0 :(得分:5)

构造函数用于对象的正常Java初始化(尽管通常Servlet实现应该具有no-arg构造函数)。

init()方法是Servlet接口提供的方法,Servlet容器将运行该方法来配置Servlet。 Servlet容器将提供ServletConfig对象,该对象为Servlet实例提供对ServletContext的访问以及部署描述符中的其他配置元素。

答案 1 :(得分:5)

init()方法是ServletServletConfig协议的一部分。您可以执行与init()中的Web上下文相关的内容以及构造函数中Servlet类的私有内容。

enter image description here

答案 2 :(得分:2)

构造函数不是servlet生命周期的一部分。

根据javadocs

  

初始化和销毁​​,以管理为servlet生命周期所持有的资源

  

仍然可以通过getServletConfig()来检索ServletConfig对象。

答案 3 :(得分:2)

servlet容器调用

Init()方法向servlet指示servlet正在投入服务。

servlet容器在实例化servlet后只调用一次init方法。在servlet可以接收任何请求之前,init方法必须成功完成。这就是我们需要init()方法的原因。

请参阅以下链接:

http://www.tutorialspoint.com/servlets/servlets-life-cycle.htm
http://docs.oracle.com/javaee/5/api/javax/servlet/Servlet.html

答案 4 :(得分:2)

1)构造函数由" Web容器(例如Tomcat,WebSphere等)使用来实例化GenericServlet / HttpServlet。

2)" Servlet.init()"方法是在web.xml中定义注入。是的,您也可以在构造函数中定义servlet级别参数,但是,作为开发人员,您将不必要地花时间做同样的事情,这可以通过(Container + Servlet API)隐式完成。

3)此外," Servlet.init()" is also used by web container to inject "ServletContext" object您无法为此目的使用构造函数。

答案 5 :(得分:0)

  1. 在JDK 1.0(最初为其编写servlet)中,动态加载的Java类(例如servlet)的构造函数无法接受参数。因此,为了向新的Servlet提供有关其自身及其环境的任何信息,服务器必须调用Servlet的init()方法并传递实现ServletConfig接口的对象。

  2. 此外,Java不允许接口声明构造函数。这意味着javax.servlet.Servlet接口无法声明接受ServletConfig参数的构造函数。它必须声明另一个方法,例如init()。

  3. 当然,仍然可以为Servlet定义构造函数,但是在构造函数中,您无权访问ServletConfig对象或抛出ServletException的能力。

答案 6 :(得分:-1)

我使用init方法一次准备了PreparedStatement,以便下次调用我的servlet时,已经创建了准备好的语句。请注意,当Servlet首次加载到应用服务器中时,将执行init方法。随后调用servlet,init方法将被忽略。在servlet的生命周期中只调用过一次