当servlet具有构造函数时,为什么在servlet中需要Init()方法?

问题描述 投票:8回答:6

在Java构造函数中用于初始化,为什么我们需要init()进行初始化...。此问题在采访中被问到

java servlets
6个回答
5
投票

该构造函数用于对象的常规Java初始化(尽管通常Servlet实现应具有无参数的构造函数。

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


5
投票

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

<< img src =“ https://image.soinside.com/eyJ1cmwiOiAiaHR0cHM6Ly9pLnN0YWNrLmltZ3VyLmNvbS9GU3I1Ti5naWYifQ==” alt =“在此处输入图像描述”>


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中,您不能为此使用构造函数。


2
投票

[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


2
投票

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

根据javadocs

初始化和销毁​​,以管理在Servlet生命周期内保留的资源

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


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

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

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

© www.soinside.com 2019 - 2024. All rights reserved.