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

11

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

谢谢。

2个回答

18

这个帖子应该能澄清它们之间的区别。

引用其中一个最具启发性的帖子:

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


3

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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接