在Java构造函数中用于初始化,为什么我们需要init()进行初始化...。此问题在采访中被问到
该构造函数用于对象的常规Java初始化(尽管通常Servlet
实现应具有无参数的构造函数。
init()
方法是Servlet
接口提供的方法,Servlet容器将运行该方法来配置Servlet
。 Servlet容器将提供一个ServletConfig
对象,该对象使Servlet
实例可以从部署描述符访问ServletContext
和其他配置元素。
init()
方法是Servlet
和ServletConfig
协议的一部分。您可以执行init()
中与Web上下文相关的操作以及构造函数中Servlet类专有的操作。
<< img src =“ https://image.soinside.com/eyJ1cmwiOiAiaHR0cHM6Ly9pLnN0YWNrLmltZ3VyLmNvbS9GU3I1Ti5naWYifQ==” alt =“在此处输入图像描述”>
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中,您不能为此使用构造函数。
[Init()
方法由servlet容器调用,以向servlet指示该servlet正在投入服务。
实例化servlet之后,servlet容器仅调用一次init方法。 servlet可以接收任何请求之前,init方法必须成功完成。这就是我们需要init()
方法的原因。
请参阅这些链接:
http://www.tutorialspoint.com/servlets/servlets-life-cycle.htmhttp://docs.oracle.com/javaee/5/api/javax/servlet/Servlet.html
构造函数不是servlet生命周期的一部分。
根据javadocs
初始化和销毁,以管理在Servlet生命周期内保留的资源
和
仍然可以通过getServletConfig()检索ServletConfig对象。
在JDK 1.0(最初为其编写servlet)中,动态加载的Java类(例如servlet)的构造函数不能接受参数。因此,为了向新的Servlet提供有关其自身及其环境的任何信息,服务器必须调用Servlet的init()方法并传递实现ServletConfig接口的对象。
此外,Java不允许接口声明构造函数。这意味着javax.servlet.Servlet接口无法声明接受ServletConfig参数的构造函数。它必须声明另一个方法,例如init()。
当然,您仍然可以为Servlet定义构造函数,但是在构造函数中,您无权访问ServletConfig对象或抛出ServletException的能力。