最近学习servlet的过程中发现了一个很怪的问题, 百度上面搜索这个问题也几乎都是错误的理解。那就是有关servlet在什么时候摧毁,回答很多是服务器关闭或者执行destory方法。服务器关闭servlet肯定会销毁,但是执行destory并不会销毁servlet。
我尝试手动调用destory方法。然后再去调用GET方法。发现还是会执行get, 也就是说执行了destory方法并不会销毁servlet。我就怀疑是不是服务器重新创建了一个servlet。然后我继续测试
用ajax测试的结果:
1 | 本次请求的方式为:PUT |
打印了servlet的地址,发现前后是同一个servlet。所以servlet并没有销毁。
断点跟踪发现super.destory()是一个空方法。
1 | //方法写在GenericServlet类中。 |
也就是这个方法并不是真正销毁servlet。所以我的理解是:
服务器关闭或者销毁servlet的时候会执行destory方法告知使用者,我要销毁这个servlet了。而我们手动执行destory方法并不会真的销毁servlet。
如理解错误望告知!谢谢。