我们可以从servlet中的service()方法调用init()方法吗?我把这作为一个面试问题。为什么有人会这样做?
答案 0 :(得分:9)
没有理由从init
调用service
,init
是由容器调用 - 用配置初始化它(顾名思义)并允许它做它需要做的任何昂贵的操作(建立与数据库或其他任何连接)。
如果您想以编程方式重新配置servlet以从servlet本身调用init
,那么可能会有所帮助,但我很难看到这个用例。
答案 1 :(得分:1)
在调用init()方法
之前,不会调用典型的servlet生命周期service()方法答案 2 :(得分:0)
您可以将init作为方法调用,而不是在servlet的生命周期中调用它。
即使是服务方法也只能在init之后调用。
答案 3 :(得分:0)
init()
方法来初始化所有需要的东西,然后才能使servlet工作。
在采访中提出的问题是为了让你的知识在以下领域让他们了解:
init()
第4号。这就像建造一座建筑物,然后呼吁买家安顿下来,然后开始建造它的结构。他们要求了解您在项目处理方面的管理和组织才能。
换句话说,这样做无济于事,你的servlet也不会受到影响!
答案 4 :(得分:0)
void init(ServletConfig config)throws ServletException
servlet
容器在实例化init method
后恰好调用servlet
一次。在servlet接收任何请求之前,init method
必须成功完成
如果servlet
init method.
容器无法将servlet投入使用
但是:如果你想明确地调用init
而不是你打电话给你班级的正常功能。
答案 5 :(得分:0)
init方法只能被调用一次。它在首次创建servlet时调用,而不是为每个用户请求再次调用。因此,它用于一次性初始化,就像applet的init方法一样。
当用户首次调用与servlet相对应的URL时,通常会创建servlet,但您也可以指定在首次启动服务器时加载servlet。
当用户调用servlet时,会创建每个servlet的单个实例,每个用户请求都会生成一个新线程,该线程会根据需要传递给doGet或doPost。 init()方法只是创建或加载一些将在servlet的整个生命周期中使用的数据。
答案 6 :(得分:0)
不,我建议不要调用,因为init()方法应该只调用一次来进行一些初始化(比如数据库连接代码,这只需要调用一次,没有理由多次调用它)其中as将为每个用户请求调用service方法(具有用户特定的请求和响应对象)。想象一下,如果你从服务方法调用init,那么init会调用很多次。所以这样调用不是一个好主意。 / p>