为什么我们不能调用servlet构造函数而不是init方法来初始化配置参数?

我想知道为什么我们不调用servlet构造函数而不是init方法来初始化配置参数。

谢谢

这个post应该澄清差异。

引用一个更有启发性的post:

init()方法通常用于执行servlet初始化 – 创建或加载servlet在处理其请求时使用的对象。 为什么不使用构造函数呢? 好吧,在JDK 1.0(最初编写servlet)中,动态加载的Java类(如servlet)的构造函数不能接受参数。 因此,为了向新的servlet提供有关其自身及其环境的任何信息,服务器必须调用servlet的init()方法并传递实现ServletConfig接口的对象。 此外,Java不允许接口声明构造函数。 这意味着javax.servlet.Servlet接口不能声明接受ServletConfig参数的构造函数。 它必须声明另一个方法,如init()。 当然,您仍然可以为servlet定义构造函数,但在构造函数中,您无权访问ServletConfig对象或抛出ServletException的能力。

通常我们可以使用构造函数来执行初始化活动,但在旧版本的java(JDK1.0v)中,构造函数不能接受动态生成的类名作为参数。 要强制执行servlet的初始化,我们应该提供ServletConfig对象作为参数,其类名由web容器动态生成,因为构造函数不能接受动态生成的类名,因此,sun人忽略了构造函数的概念并引入了特定的init方法( – )执行初始化活动,可以将动态生成的类名作为参数。