编程技术分享平台

网站首页 > 技术教程 正文

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

xnh888 2024-11-12 13:44:25 技术教程 15 ℃ 0 评论

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并返回。



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



注意:服务器正常关闭,再启动,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.


JavaScript 存储对象

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


参考

https://www.cnblogs.com/skjsg/p/4707032.html

https://how2j.cn/stage/13.html

https://docs.oracle.com/javaee/7/api/toc.htm

https://www.runoob.com/jsref/prop-win-sessionstorage.html

Tags:

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表