Servlet简介及其生命周期详解

由于servlet运行在容器中,没有main()方法,因此整个生命周期都是由容器来控制的。

简单而言,servlet的生命周期只有两种状态:未创建状态与初始化状态。这2种状态的转换主要是由3个重要的方法来进行控制的。init()、service()、和destroy() 。其中init()方法就是servlet的生命的起点。用于创建活在这打开任何与Servlet相关的资源以及执行初始化的工作 。service()方法是真正的处理客户端传过来的请求的方法。(请求一次就执行一次service,请求多次就执行多次。而init和destroy方法在servlet的整个生命周期只执行一次) 它根据请求方法,将请求分发到doGet()或者doPost()等方法。 destroy()方法释放任何在init()方法中打开的与Servlet相关的资源。

具体而言:Servlet的生命周期可以分为加载、创建、初始化、处理客户请求和卸载5个阶段。

1、加载。 容器通过类加载器使用servlet类对应的文件来加载servlet。

2、创建。通过调用servlet的构造函数来创建一个Servlet实例。

3、初始化。通过调用init()方法来完成初始化工作。这个方法是在Servlet已被创建但向客户端提供服务之前调用的,注意!在一个Servlet的生命周期中 init()方法只会被调用一次。(servlet默认是单例多线程的)

4、处理客户请求。 servlet一旦被创建后,它就可以为客户端提供服务了。每当有新的请求到来时,容器就会创建一个新的线程来处理该请求,接着用service()方法来完成这个请求。当然,service()方法会根据请求的method属性值的不同来选择对应的方法来完成具体的响应。(get请求---->doGet() ,post请求----->doPost())。

5、卸载。容器在卸载Servlet之前要调用destroy()方法,让Servlet自己释放其占有的系统资源,一旦destroy()方法被调用,容器就不会再向这个Servlet发送任何请求消息了。如果容器还需要个Servlet,则必须重新创建并初始化一个Servlet实例。注意!在一个Servlet的生命周期中destroy()方法只会被调用一次。

====================================================================

Servlet简介及其生命周期详解

简介

        Servlet生命周期,即阐述Servlet从产生到毁灭的整个过程。 
        在Servlet产生到消亡的过程中,有三个生命周期函数,初始化方法init(),处理客户请求的方法service(),终止方法destroy()。

init方法

        在一个Servlet的生命周期中,init方法只会被执行一次,之后无论用户执行多少次请求,都不会在调用该方法。 
        关于init方法的执行时机,有两种方式可选,一般的是在服务器启动后第一个用户请求改Servlet是调用,你也可以设置该Servlet在服务器启动后自动执行。 
init方法负责简单的创建或者加载一些数据,这些数据将用于该Servlet的整个生命周期中。

service方法

        当一个客户请求改Servlet时,实际的处理工作全部有service方法来完成,service方法用来处理客户端的请求,并生成格式化数据返回给客户端。 
        每一次请求服务器都会开启一个新的线程并执行一次service方法,service根据客户端的请求类型,调用doGet、doPost等方法。 
        service是由web容器来调用的,我们无需对service具体内容做任何处理,service会自动的根据客户端的请求类型去调用doGet、doPost等方法,所以我们只需要做好doGet、doPost方法的实现就可以了。

destroy方法

        该方法在整个生命周期中,也是只会被调用一次,在Servlet对象被销毁是调用,在servlet中,我们可以做一些资源的释放等操作,执行destory方法之后的servlet对象,会等待jvm虚拟机的垃圾回收机制择时回收。

doGet、doPost方法

        实际的业务处理流程,service根据客户端的请求类型来自动匹配需要执行那个方法。
 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值