龙空技术网

JavaEE/JS 一些常用对象的生命周期/生存时间总结

java笔记 447

前言:

如今大家对“java钝化”大体比较着重,咱们都需要知道一些“java钝化”的相关文章。那么小编在网摘上汇集了一些有关“java钝化””的相关知识,希望姐妹们能喜欢,各位老铁们一起来学习一下吧!

Servlet实例化

当用户通过浏览器输入一个路径,这个路径对应的servlet被调用的时候,该Servlet就会被实例化。

初始化

用户定义Servlet 继承了HttpServlet,同时也继承了init(ServletConfig) 方法。init 方法是一个实例方法,所以会在构造方法执行后执行。

提供服务

接下来就是执行service()方法,然后通过浏览器传递过来的信息进行判断,是调用doGet()还是doPost()方法。

销毁

在如下几种情况下,会调用 destroy()

1. 该 Servlet 所在的 web 应用重新启动,并且在 server.xml 中配置了

<Context path="/" docBase="..." debug="0" reloadable="false" />  如果把 reloadable="false" 改为reloadable="true" 就表示有任何类发生的更新,web应用会自动重启当web应用自动重启的时候,destroy()方法就会被调用。

2. 关闭tomcat的时候 destroy()方法会被调用,但是这个一般都发生的很快,不易被发现。

被回收

当该Servlet被销毁后,就满足垃圾回收的条件了。 当下一次垃圾回收GC来临的时候,就有可能被回收。

HttpSession创建

在第一次调用 request.getSession() 方法时,服务器会检查是否已经有对应的session,如果没有就在内存中创建一个session并返回。

javaee7 Api

销毁当一段时间内session没有被使用(默认为30分钟),则服务器会销毁该session。如果服务器非正常关闭(强行关闭),没有到期的session也会跟着销毁。如果调用session提供的invalidate(),可以立即销毁session。

javaee7 invalidate()

注意:服务器正常关闭,再启动,Session对象会进行钝化和活化操作。同时如果服务器钝化的时间在session 默认销毁时间之内,则活化后session还是存在的。否则Session不存在。 如果JavaBean 数据在session钝化时,没有实现Serializable 则当Session活化时,会消失。

Cookie

通过setMaxAge(int expiry)来设置cookie的生存时间,单位秒,负数-表示浏览器退出时销毁;0-表示删除cookie。

文档如下:

expiry - an integer specifying the maximum age of the cookie in seconds; if negative, means the cookie is not stored; if zero, deletes the cookie.

javaee7

JavaScript 存储对象localStorage 用于长久保存整个网站的数据,保存的数据没有过期时间,直到手动去除。sessionStorage 用于临时保存同一窗口(或标签页)的数据,在关闭窗口或标签页之后将会删除这些数据。

参考

标签: #java钝化