JavaWeb的生命周期 - 草稿

分为启动(加载web应用的有关数据,创建ServletContext对象,对Filter和一些Servlet初始化)、运行时(主要是Servlet容器调用service(方法))和终止(释放资源)三个阶段。

该过程可通过Tomcat的管理应用来控制应用的生命周期:

《Tomcat与javaweb开发技术详解》

Reload操作: 相当于先stop当前web应用,再start。

Undeploy操作: 从Tomcat卸除,web文件被删除。


## Servlet生命周期

就是Servlet容器控制的Servlet接口提供的init、service、destroy三个方法。

在Servlet的生命周期中,初始化和销毁只会发生一次,即init()和destroy()方法只会被Servlet容器调用一次。service()取决于客户端请求的次数。

实践验证:写一个继承于GenericServlet类的xxxservlet,设置三个全局变量分别在三个方法中打印,看结果,即可。

并且,可以有多个xxxservlet对象对应同一个xxxServlet类,尽管类代码一模一样,但属于不同的servlet,互相没有关系!!

《Tomcat与javaweb开发技术详解》

——————

## ServletContext与Web应用范围

Servlet容器在启动一个web应用时,会为它创建唯一的ServletContext对象,终止时销毁。

因此,ServletContext对象与web应用具有同样的生命周期。而且,ServletContext对象可以被web应用中的所有web组件共享。因此,可以利用该对象来存取web应用范围内的共享数据(可以是任意类型)。

《Tomcat与javaweb开发技术详解》

实践验证: 实现web统计访问次数的功能。先写一个Counter类,将其放入servletContext对象。(这里有一种技巧,就是怎么放??你总不能每次请求都放一次吧!所以,先从servletContext获取该对象,如果为null则将其放入,所以第二次以后都只是取,不会再执行放入的逻辑了,if不符合了啊,当且仅当第一次才符合)。

——————

更进一步,将计数写入文件,当web重启时仍然能够继续计数。那么,什么时候写入,什么时候读取呢??

我们已经知道,ServletContext对象最早被创建,最晚被销毁。那么我们的Counter是放到ServletContext对象中的,生命周期随着ServletContext一样。这个时候,就需要ServletContextListner出马了,顾名思义,它是来监听ServletContext的。只需要写一个实现该接口的类就可以了,在contextInitialized()和contextDestroyd()方法写读取和写入文件的逻辑即可。思想如下:

《Tomcat与javaweb开发技术详解》

——————

提一下Servlet的异常,ServletException和IOException,前者由Servlet容器捕获,给客户端响应。后者表示io操作时异常。

——————

防止页面被客户端缓存:

在响应时设置一些header。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 从三月份找实习到现在,面了一些公司,挂了不少,但最终还是拿到小米、百度、阿里、京东、新浪、CVTE、乐视家的研发岗...
    时芥蓝阅读 42,627评论 11 349
  • 1. Java基础部分 基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语...
    子非鱼_t_阅读 33,829评论 18 399
  • 这部分主要是与Java Web和Web Service相关的面试题。 96、阐述Servlet和CGI的区别? 答...
    杂货铺老板阅读 1,495评论 0 10
  • 一. Java基础部分.................................................
    wy_sure阅读 3,955评论 0 11
  • 第九章 学会换位思考,你的世界会更宽阔 1.会议之前,如何有技术的闲聊。 2.发表演讲,听众是唯一的裁判。 3.面...
    余温未减阅读 228评论 0 0

友情链接更多精彩内容