【发布时间】:2010-03-04 19:05:39
【问题描述】:
我想知道为什么我们不调用 servlet 构造函数而不是 init 方法来初始化配置参数。
谢谢
【问题讨论】:
我想知道为什么我们不调用 servlet 构造函数而不是 init 方法来初始化配置参数。
谢谢
【问题讨论】:
This thread should clarify the differences.
引自一篇更有启发性的帖子:
init() 方法通常用于 执行小服务程序 初始化——创建或加载 servlet 使用的对象 在处理其请求时。为什么 不使用构造函数?出色地, 在 JDK 1.0 中(其中 servlet 最初写的),构造函数 动态加载的 Java 类(例如 作为 servlet) 不能接受 论据。所以,为了提供一个 新的 servlet 有关的任何信息 自身及其环境,服务器 必须调用 servlet 的 init() 方法 并传递一个对象 实现 ServletConfig 界面。此外,Java 不允许 声明构造函数的接口。 这意味着 javax.servlet.Servlet 接口不能 声明一个接受的构造函数 ServletConfig 参数。它必须 声明另一个方法,例如 init()。 当然,这仍然是可能的,因为 你为你的定义构造函数 servlet,但在构造函数中你 无权访问 ServletConfig 物体或扔东西的能力 Servlet 异常。
【讨论】:
一般我们可以使用构造函数来执行初始化活动,但是在旧版本的java(JDK1.0v)中,构造函数不能接受动态生成的类名作为参数。为了强制执行 servlet 的初始化,我们应该提供 ServletConfig 对象作为参数,其类名由 web 容器动态生成,因为构造函数不能接受动态生成的类名,因此,sun 人忽略了构造函数的概念,并引入了一个特定的方法 init( -) 执行可以将动态生成的类名作为参数的初始化活动。
【讨论】: