Java 为什么我们需要在servlet中使用Init()方法,而servlet有它的构造函数?

Java 为什么我们需要在servlet中使用Init()方法,而servlet有它的构造函数?,java,servlets,Java,Servlets,在java中,构造函数用于初始化为什么我们需要init()进行初始化。。。。这个问题是在一次采访中提出的,构造函数用于对象的正常Java初始化(尽管通常Servlet实现应该有一个无参数构造函数) init()方法是由Servlet接口提供的方法,Servlet容器将运行该接口来配置Servlet。Servlet容器将提供一个ServletConfig对象,该对象允许Servlet实例从部署描述符访问ServletContext和其他配置元素 构造函数不是servlet生命周期的一部分 根据ja

在java中,构造函数用于初始化为什么我们需要init()进行初始化。。。。这个问题是在一次采访中提出的,构造函数用于对象的正常Java初始化(尽管通常
Servlet
实现应该有一个无参数构造函数)


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

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

根据javadocs

init和destroy,以管理在servlet生命周期内保留的资源

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

Init()
方法由servlet容器调用,以向servlet指示servlet正在投入服务

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

请参阅以下链接:


方法是
Servlet
ServletConfig
协议的一部分。您可以在
init()
中执行与web上下文相关的操作,也可以在构造函数中执行Servlet类私有的操作

1)构造函数被“Web容器”(例如Tomcat、WebSphere等)用来实例化GenericServlet/HttpServlet

2) “Servlet.init()”方法的作用是注入web.xml中定义的内容。是的,您也可以在构造函数中定义Servlet级别的参数,但作为一名开发人员,您将不必要地花费时间来完成(容器+Servlet API)可以隐式为您完成的相同工作

3) 此外,“Servlet.init()”中不能使用构造函数

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

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

  • 当然,您仍然可以为servlet定义构造函数,但在构造函数中,您无权访问ServletConfig对象或抛出ServletException


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

    我喜欢这样看,加上它看起来像android的生命周期:我有相同的问题。你找到了正确的答案吗?