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