2

我们可以从 servlet 中的 service() 方法调用 init() 方法吗?我得到了这个作为面试问题。为什么会有人这样做呢?

4

7 回答 7

9

没有理由调用initfrom serviceinit意味着由容器调用 - 使用配置初始化它(顾名思义)并允许它执行它需要执行的任何昂贵的操作(设置与数据库的连接或其他)。

如果您想以编程方式重新配置您的 servlet 以从 servlet 本身调用 ,这可能是有道理的init,但我很难看到这个用例。

于 2012-04-20T09:51:30.523 回答
1

在典型的 servlet 生命周期中,在调用 init() 方法之前不会调用 service() 方法

于 2012-04-20T09:54:10.687 回答
0

您可以将 init 作为一种方法调用,而不是您希望在 servlet 的生命周期中调用它。

甚至服务方法也只会在初始化之后被调用。

于 2012-04-20T09:55:28.170 回答
0

init()方法被调用以在 servlet 开始工作之前初始化所有需要的东西。

面试中提出的问题旨在让他们了解您在以下领域的知识:

  1. 什么是init()
  2. 为什么要求
  3. 我们在哪里称呼它
  4. 如果我们从服务中调用它会发生什么

第四,就像建造一座建筑物,然后召集买家在里面安顿下来,然后开始建造它的结构。他们要求这了解您在项目处理方面的管理和组织才能。

换句话说,这样做是无济于事的,您的 servlet 将不会受到影响!

于 2012-04-20T10:07:37.253 回答
0
void init(ServletConfig config)throws ServletException

servlet容器在init method实例化servlet. 必须在init methodservlet 可以接收任何请求之前成功完成。如果
_servletinit method.

但是:如果你想init显式调用而不是你调用类的正常函数。

于 2012-04-20T10:43:23.567 回答
0

init 方法被设计为只被调用一次。它在第一次创建 servlet 时调用,而不是为每个用户请求再次调用。因此,它用于一次性初始化,就像小程序的 init 方法一样。

servlet 通常在用户第一次调用与 servlet 对应的 URL 时创建,但您也可以指定在服务器首次启动时加载 servlet。

当用户调用 servlet 时,会创建每个 servlet 的单个实例,每个用户请求都会产生一个新线程,该线程会酌情移交给 doGet 或 doPost。init() 方法只是创建或加载一些将在 servlet 的整个生命周期中使用的数据。

于 2014-03-27T10:11:35.437 回答
0

不,我建议不要调用,因为 init() 方法应该只调用一次以进行一些初始化(如数据库连接代码,这必须只调用一次,没有理由多次调用它)作为服务方法将为每个用户请求调用(带有用户特定的请求和响应对象)。想象一下,如果你从服务方法调用 init,那么 init 会调用很多次。所以这样调用不是一个好主意。

于 2014-11-27T08:13:48.473 回答