Servlet的生命周期和工作原理

时间:2021-12-23 21:01:30

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

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

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()方法,在该方法中去处理客户端请求,并把处理结果返回。

Servlet的生命周期和工作原理
步骤:
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>

参考博客:
http://www.cnblogs.com/xuekyo/archive/2013/02/24/2924072.html