servlet中destory方法的误解

最近学习servlet的过程中发现了一个很怪的问题, 百度上面搜索这个问题也几乎都是错误的理解。那就是有关servlet在什么时候摧毁,回答很多是服务器关闭或者执行destory方法。服务器关闭servlet肯定会销毁,但是执行destory并不会销毁servlet。

我尝试手动调用destory方法。然后再去调用GET方法。发现还是会执行get, 也就是说执行了destory方法并不会销毁servlet。我就怀疑是不是服务器重新创建了一个servlet。然后我继续测试

用ajax测试的结果:

本次请求的方式为:PUT
本次请求的方式为:GET
本次请求的方式为:DESTORY
servlet.IndexServlet@36cfac98
正在销毁servlet。。。
本次请求的方式为:GET
本次请求的方式为:DESTORY
servlet.IndexServlet@36cfac98
正在销毁servlet。。。

打印了servlet的地址,发现前后是同一个servlet。所以servlet并没有销毁。

断点跟踪发现super.destory()是一个空方法。

//方法写在GenericServlet类中。
public void destroy() {
}

也就是这个方法并不是真正销毁servlet。所以我的理解是:

服务器关闭或者销毁servlet的时候会执行destory方法告知使用者,我要销毁这个servlet了。而我们手动执行destory方法并不会真的销毁servlet。

如理解错误望告知!谢谢。

你可能感兴趣的:(JAVA)