关于Servlet简介及其生命周期的简单总结了解

关于Servlet简介及其生命周期的简单了解

简介

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

Servlet的生命周期指的是 Servlet从被Web服务器加载到它被销毁的整个生命过程

Servlet生命周期分为三个阶段: 
1:初始化阶段,调用init()方法 
2:响应客户请求阶段,调用service()方法 
3:终止阶段,调用destory()方法

 

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根据客户端的请求类型来自动匹配需要执行那个方法

 

流程-步骤-工作原理:创建对象的时机

Web服务器加载Servlet:Web服务器启动后,它会根据每个工程的web.xml文件去查找该工程的Servlet,并且找到这些Servlet的Class文件所在的地址,将它们载入到Web容器中,不同的Servlet被Web容器加载的次序不同,通过web.xml文件可以配置每个Servlet载入的次序。一般来说,Servlet在服务器启动时就会被Web服务器加载,而JSP文件只有在用户访问到该页面时才会被动态载入。

创建一个Servlet实例:这时会调用该Servlet的构造函数去创建一个具体的对象。 
经过以上的两个步骤后,这时如果有客户端请求,Web服务器就会调用Servlet对象的init()方法 
接着Web服务器调用Servlet的service()方法去接收请求,处理请求,并把处理结果返回。 
销毁:Servlet实例被销毁,这是通过调用Servlet的destory()方法来实现的。

在以上的几个阶段中,Servlet对外提供服务阶段最重要的。service()方法是编程人员真正要关心的方法,因为它才是Servlet真正开始响应客户端请求,并且处理业务逻辑的方法。Service()接收到客户端请求后,再调用Servlet的doGet()方法或者doPost()方法去处理请求。所以在编写自己的Servlet时,一般只需要重写doGet()和doPost()方法,在该方法中去处理客户端请求,并把处理结果返回。

这里写图片描述
步骤: 
1:Web Client向Servlet容器(tomcat)发出Http请求 
2:Servlet容器接收Web Client的请求 
3:Servlet容器创建一个HttpRequest对象,将Web Client请求的信息封装到这个对象中。 
4:Servlet容器创建一个HttpResponse对象 
5:Servlet容器调用HttpServlet对象的service方法,把HttpRequest对象与HttpResponse对象作为参数传递给HttpServlet对象。 
6:HttpServlet调用HttpRequest对象的有关方法,获取Http请求信息 
7:HttpServlet调用HttpResponse对象的有关方法,生成响应数据 
8:Servlet容器把HttpServlet的响应结果传入Web Client。

工作原理:

先解释Servlet接收和响应客户请求的过程,首先客户发送个请求,Servlet容器会创建特定于这个请求的ServletRequest对象和ServletResponse对象,然后调用Servlet的service()方法。Service()方法从ServletRequest对象获得客户请求信息,处理该请求,然后通过ServletResponse对象向客户返回响应信息。

创建Servlet对象的时机

1:Servlet容器启动时:读取web.xml配置文件中的信息,构造指定的Servlet对象,创建ServletConfig对象,同时将ServletConfig对象作为参数来调用Servlet对象的init方法。 
2:在Servlet容器启动后:客户首次向Servlet发出请求,Servlet容器会判断内存中是否存在指定的Servlet对象,如果没有则创建它,然后根据客户的请求创建HttpRequest、HttpResponse对象,从而调用Servlet 对象的service方法。 
3:Servlet Servlet容器在启动时自动创建Servlet,这是由在web.xml文件中为Servlet设置的<load-on-startup>属性决定的。从中我们也能看到同一个类型的Servlet对象在Servlet容器中以单例的形式存在。

<servlet>
        <servlet-name>Init</servlet-name>
        <servlet-class>org.xl.servlet.InitServlet</servlet-class>
        <load-on-startup>1</load-on-startup>
</servlet>
  • 2
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值