Java 从servlet中的服务方法调用init()方法
我们可以从servlet中的service()方法调用init()方法吗?这是我面试时问的问题。为什么会有人这样做?没有理由从Java 从servlet中的服务方法调用init()方法,java,servlets,Java,Servlets,我们可以从servlet中的service()方法调用init()方法吗?这是我面试时问的问题。为什么会有人这样做?没有理由从服务调用init,init是由容器调用的-用配置(顾名思义)初始化它,并允许它执行任何需要执行的昂贵操作(建立到数据库的连接或其他) 如果您希望以编程方式重新配置servlet,以便从servlet本身调用init,这可能会有一定的意义,但我很难看到这个用例。在典型的servlet生命周期中,在调用init()方法之前,不会调用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说清楚一点,我是在评论实际问题,而不是你的刀子例子:)老实说,我很清楚:)这就像建造一座大楼,然后要求买家在里面定居,然后开始建造它的结构。他们问这个是为了了解你在项目处理方面的管理和组织才能。