Servlet的生命周期

Servlet的生命周期

简介

Servlet的生命周期是由容器管理的,分别经历四个阶段:

阶段次数时机
创建1次第一次请求时,new
初始化1次Servlet实例化之后,init()
执行服务多次每次请求,service()
销毁1次停止服务,destroy()

具体步骤

  • 1、加载
    在下列时刻会加载Servlet(只执行一次):
    • 如果已经配置自动加载选项,则在启动服务器时自动加载web.xml文件中设置的<load-on-start>
    • 服务器启动之后,客户机首次向Servlet发出请求时会加载;
    • 重新加载Servlet时会进行一次加载;
  • 2、实例化
    加载Servlet后,服务器创建一个Servlet实例。(只执行一次);
  • 3、初始化
    调用Servlet的init()方法。在初始化阶段,Servlet初始化参数被传递给Servlet配置对象ServletConfig,(只执行一次);
  • 4、请求处理
    对于到达服务器的客户机请求,服务器创建针对此次请求的一个"请求"对象和一个"响应对象"。
    服务器调用Servlet的service()方法,该方法用于传递"请求"和"响应"对象。
    service()方法从"请求"对象获得请求信息、处理该请求并用"响应"对象的方法将响应回传给客户端。
    service()方法可以调用其他方法来处理请求,例如doGet()、doPost()或其他方法。
    每次请求都会执行该步骤
  • 5、销毁
    当服务器不需要Servlet,或重新装入Servlet的新实例时,服务器会调用Servlet的destroy()方法。(只执行一次);

注意事项

  • 如果需要Servlet在服务启动时就实例化并初始化,我们可以在servlet的配置中添加load-on-startup配置启动顺序,配置的数字为启动顺序,应避免冲突且应>6;
  • 在Servlet中我们一般不要轻易使用成员变量,容易造成给线程安全问题;
  • 如果要使用成员变量的话,应当尽量避免对成员变量产生修改;
  • 如果产生修改应该注意线程安全问题;
  • 自己添加线程安全编码处理,会严重影响效率;
    原则,能不用成员变量就不要用!

持续更新,如果错误,欢迎大家指出,共同学习...

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

一个小坑货

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值