构造函数用于初始化为什么我们需要init()进行初始化....这个问题是在面试中提出的
答案 0 :(得分:5)
构造函数用于对象的正常Java初始化(尽管通常Servlet
实现应该具有no-arg构造函数)。
init()
方法是Servlet
接口提供的方法,Servlet容器将运行该方法来配置Servlet
。 Servlet容器将提供ServletConfig
对象,该对象为Servlet
实例提供对ServletContext
的访问以及部署描述符中的其他配置元素。
答案 1 :(得分:5)
init()
方法是Servlet
和ServletConfig
协议的一部分。您可以执行与init()
中的Web上下文相关的内容以及构造函数中Servlet类的私有内容。
答案 2 :(得分:2)
构造函数不是servlet生命周期的一部分。
根据javadocs
初始化和销毁,以管理为servlet生命周期所持有的资源
和
仍然可以通过getServletConfig()来检索ServletConfig对象。
答案 3 :(得分:2)
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)
在JDK 1.0(最初为其编写servlet)中,动态加载的Java类(例如servlet)的构造函数无法接受参数。因此,为了向新的Servlet提供有关其自身及其环境的任何信息,服务器必须调用Servlet的init()方法并传递实现ServletConfig接口的对象。
此外,Java不允许接口声明构造函数。这意味着javax.servlet.Servlet接口无法声明接受ServletConfig参数的构造函数。它必须声明另一个方法,例如init()。
当然,仍然可以为Servlet定义构造函数,但是在构造函数中,您无权访问ServletConfig对象或抛出ServletException的能力。
答案 6 :(得分:-1)
我使用init方法一次准备了PreparedStatement,以便下次调用我的servlet时,已经创建了准备好的语句。请注意,当Servlet首次加载到应用服务器中时,将执行init方法。随后调用servlet,init方法将被忽略。在servlet的生命周期中只调用过一次