Java 从servlet中的服务方法调用init()方法

Java 从servlet中的服务方法调用init()方法,java,servlets,Java,Servlets,我们可以从servlet中的service()方法调用init()方法吗?这是我面试时问的问题。为什么会有人这样做?没有理由从服务调用init,init是由容器调用的-用配置(顾名思义)初始化它,并允许它执行任何需要执行的昂贵操作(建立到数据库的连接或其他) 如果您希望以编程方式重新配置servlet,以便从servlet本身调用init,这可能会有一定的意义,但我很难看到这个用例。在典型的servlet生命周期中,在调用init()方法之前,不会调用service()方法您可以将init作为一

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

没有理由从
服务
调用
init
init
是由容器调用的-用配置(顾名思义)初始化它,并允许它执行任何需要执行的昂贵操作(建立到数据库的连接或其他)


如果您希望以编程方式重新配置servlet,以便从servlet本身调用
init
,这可能会有一定的意义,但我很难看到这个用例。

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

您可以将init作为一个方法调用,不应该像您所希望的那样在servlet的生命周期中调用它

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

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

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

  • 什么是
    init()
  • 为什么要这样做
  • 我们把它叫做哪里
  • 如果我们从服务中呼叫它会发生什么

  • 四号。这就像建造一座大楼,然后要求买家在里面安顿下来,然后开始建造它的结构。他们问这个是为了了解你在项目处理方面的管理和组织才能

    换句话说,这样做是徒劳的,您的servlet将不会受到影响

    void init(ServletConfig config)throws ServletException
    
    在实例化
    servlet
    之后,
    servlet
    容器只调用
    init方法一次。
    init方法必须成功完成,servlet才能接收任何请求。
    如果使用
    init方法,则
    servlet
    容器无法将servlet投入服务。


    但是:如果你想显式调用
    init
    ,那么你可以将其作为类的普通函数调用。

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

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


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

    不,我建议不要调用,因为init()方法应该只调用一次以进行一些初始化(与数据库连接代码一样,只需调用一次,没有理由多次调用)其中,将为每个用户请求调用as-service方法(使用用户特定的请求和响应对象)。想象一下,如果您从service-method调用init,那么init将被调用很多次。因此,这样调用不是一个好主意。

    您当然可以调用它,但上帝保佑编写此类代码的团队。打个比方,你能用刀割伤自己吗?是的,但它会让你流血而死。你为什么不试试,看看会发生什么?这只需要你几分钟:)我希望有一个“喜欢”按钮here@Kal说清楚一点,我是在评论实际问题,而不是你的刀子例子:)老实说,我很清楚:)这就像建造一座大楼,然后要求买家在里面定居,然后开始建造它的结构。他们问这个是为了了解你在项目处理方面的管理和组织才能。