Servlet的生命周期

什么是Servlet生命周期?

什么时候被创建?

什么时候被销毁?

Servlet对象的创建,对象上方法的调用,最终的销毁是由WEB容器(Tomcat服务器)全权负责

创建Servlet对象

第一步创建模块

 第二步添加支持框架

 第三步创建类包

第四步创建

 

第五步添加架包

服务器lib包

 

 第六步引进Servlet五个方法

Alt+Enter

 

 第七步编写无参数构造方法

.sout快捷键

 第八步配置web.xml

 第九步 研究服务器在启动Servlet对象有没有被创建出来(默认情况下)?

如果构造方法不执行,服务器启动的时候就不会创建AServlet对象

部署服务器

 Dbug模式启动起来

 测试结果得出:默认情况下,服务器在启动的时候Servlet对象并不会被实例化

这个设计是合理的。用户没有发送请求之前,如果提前创建出来所有的Servlet对象,必然是耗费内存的,并且创建出来的Servlet如果一直没有被用户访问,显然一直占内存,所以没必要先创建。

怎么让服务器启动的时候创建Servlet对象呢?

一般情况下不会配置

 加一个子标签”在启动的时候加载Servlet对象"

正整数:数字越小,优先级就越高

Servlet对象的生命周期

init方法

service方法

destory方法

 

服务器启动,AServlet对象还没有被服务器创建出来

 清除控制台所有信息

 用户在浏览器发送请求

本机地址加项目名加路径

默认情况下服务器启动的时候ASevlet对象并没有被实例化

用户发送第一次请求的时候控制台输出了以下内容

根据以上输出内容得出结论:

  • 用户在发送第一次请求的时候Servlet对象被实例化。(AServlet的构造方法被执行了,并且执行的是无参数构造方法)
  • AServlet对象被创建出来之后,Tomcat服务器马上调用了AServlet对象的init方法。(init方法在执行的时候,AServlet对象已经存在了,已经被创建出来了)

init方法和无参构造方法只会执行一次

Servlet对象并没有新建,直接调用之前的Service方法:单例

 

用户第一次请求是不会创建AServlet对象,Tomcat服务器先解析web.xml文件,类名和路径是绑定在一起的,接下来用户开始发送第一次请求,通过请求路径找到类名,找到类名通过反射机制会调用AServlet类无参数构造方法,所以无参数构造方法先执行(通过请求路径去容器里面找AServlet对象有没有被创建出来)

 关闭服务器

 destory方法执行的时候AServlet方法还在,调用之后才会销毁。

 

 

 

 

 

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值