我们应该从Servlet中的destroy()
和init()
方法中调用service()
方法吗?我在博客中得到了许多令人困惑的答案。
据我了解,当我们从destroy()
调用init()
方法时,它应该调用并销毁servlet,如果我们要覆盖servlet中的destroy()
。然后servlet将被销毁。
以上理解是对的吗?
一切都不是真的。
servlet的destroy()
方法只有在容器关闭时才被容器调用。在容器关闭期间,所有servlet都将被销毁。你不应该自己调用这个方法。 destroy()
方法只是让您有机会在关机时执行一些代码。例如,关闭在init()
期间打开的一些外部资源。
EG
private SomeExternalResource someExternalResource;
@Override
public void init() {
someExternalResource = new SomeExternalResource();
}
@Override
public void destroy() {
someExternalResource.close();
}
当您没有任何清理时,您不一定需要实现该方法。
在java servlet中,destroy()
方法不应该由程序员调用。但是,如果它被调用,它就会被执行。但主要的问题是,servlet会被破坏吗?不,它不会。 destroy()
方法不会破坏java servlet。当web容器因任何原因(如服务器重启)破坏servlet时,只是调用方法(我们可以说是一个事件)。
但是如果你自己调用destroy()
方法,内容就会被执行,然后相应的进程继续。对于这个问题,destroy()
被执行,然后servlet初始化完成。