【问题标题】:Why can not we call servlet constructor instead of init method to initialize the config parameters?为什么我们不能调用 servlet 构造函数而不是 init 方法来初始化配置参数?
【发布时间】:2010-03-04 19:05:39
【问题描述】:

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

谢谢

【问题讨论】:

    标签: java servlets


    【解决方案1】:

    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 异常。

    【讨论】:

      【解决方案2】:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-03-10
        • 1970-01-01
        • 2015-03-09
        • 1970-01-01
        • 2020-12-29
        相关资源
        最近更新 更多