为什么我们需要使用init()
而不是constructor
?
请参考Servlet
和Applet
回答。
Applet
的init()
与Servlet
有何不同?
init()
方法创建并加载 Servlet。但是,Servlet 实例首先通过构造函数(由 Servlet 容器执行)创建。在 Servlet 中,我们不能编写带有参数的构造函数(这会抛出异常)。所以,他们提供了一个接受 ServletConfig 对象作为参数的 init()
方法。ServletConfig 对象提供有关其初始化(init)参数的信息。Servlet 类不能声明带有 ServletConfig 对象作为参数的构造函数,也无法访问 ServletConfig 对象。applet
怎么样? - Mohammad Faisalinit()
方法执行初始化任务。他们本来可以选择另一种方式并要求servlet具有单个参数构造函数(ServletConfig
),它可以选择抛出ServletException
。从技术上讲,这没有问题,因为反射API允许您调用类中声明的任何构造函数。init()
方法可以使servlet容器预先实例化对象并延迟其初始化。它有助于将生命周期的不同阶段分开。init()方法仅被调用一次,因此控件的唯一实例将被创建。