Servlet生命周期并不由程序员控制,而是由Servlet容器掌管.
在实体化Servlet以前,Servlet容器必须确认与Servlet有关的类位于何处,再以“类载入器”(ClassLoader)将Servlet类载入存储器。 当Servlet被调用时,Servlet容器将会调用该Servlet的默认构造函数(default constructor),然后建立一个Servlet实体.
1)初始化时期
由于javax.servlet接口内定义的init(ServletConfig config)方法必须传入一个ServletConfig对象,因此在
覆写该方法时,必须再以super.init(config) 调用父类的init()方法。为了简化init()方法的覆写方式,javax.servlet.GenericServlet类另外定义了一个不需传递参数的init方法,以便程序员直接覆写init()方法。当Servlet容器调用init(ServletConfig config)方法时,该方法也会自动调用您所覆写的init()方法。 提示: 在GenericServlet类内定义的init()方法并未传入ServletConfig对象。如果在此方法内须要存取ServletConfig对象,可直接调用getServletConfig()方法。
容器环境也将根据客房请求创建一个Servlet对象实例,或者创建多个Servlet对象实例,并把这些实例加入到Servlet实例池中。
在web-inf下你可以建立一个web.xml文件,它的格式你可以参考%tomcat%/conf/web.xml来写,可以制定自己应用中用到的servlet。其中有一个<load-on-startup>1</load-on-startup>的标签,来定义servlet的启动时间,1为Tomcat启动时候启动。
2)Servlet的执行时期
Servlet 被初始化以后,就处于能响应请求的就绪状态。每个对Servlet 的请求由一个Servlet Request 对象代表。Servlet 给客户端的响应由一个Servlet Response对象代表。当客户端有一个请求时,Servlet Engine 将ServletRequest 和ServletResponse对象都转发给Servlet,这两个对象以参数的形式传给Service方法。这个方法由javax.servlet.Servlet定义并由具体的Servlet 实现。
Servlet还可以实现 ServletRequest 和ServletResponse接口。ServletRequest接口可以让Servlet 获取客户端请求中的参数,如form data、request信息、协议类型,等等。Servlet 可以从ServletInputStream流中读取request 数据。ServletResponse接口允许Servlet设置response headers和status codes。实现这个接口可以使Servlet能访问ServletOutputStream流用来向客户端返回数据。
Servlets能同时运行多个service.
3)Servlet结束时期
当WEB服务器和容器关闭时,会自动调用HttpServlet.destroy()方法关闭任何打开的资源,并进行一些关闭前的处理。
servlet 生命周期 即工作流程
Servlet的生命周期:
(1)装载Servlet。这项操作一般是动态执行的。然而,Server通常会提供一个管理的选项,用于在Server启动时强制装载和初始化特定的Servlet;
(2)Server创建一个Servlet的实例;
(3)Server调用Servlet的init()方法;
(4)一个客户端的请求到达Server;
(5)Server创建一个请求对象;
(6)Server创建一个响应对象;
(7)Server激活Servlet的service()方法,传递请求和响应对象作为参数;
(8)service()方法获得关于请求对象的信息,处理请求,访问其他资源,获得需要的信息;
(10)service()方法使用响应对象的方法,将响应传回Server、最终到达客户端。
service()方法可能激活其它方法以处理请求,如doGet()或doPost()或程序员自己开发的新的方法;
对于更多的客户端请求,Server创建新的请求和响应对象,仍然激活此Servlet的service()方法,将这两个对象作为参数传递给它。如此重复以上的循环,但无需再次调用init()方法。一般Servlet只初始化一次;
当Server不再需要Servlet时,Server调用Servlet的Destroy()方法。
分享到:
相关推荐
Servlet 的生命周期: Servlet 生命周期可被定义为从创建直到毁灭的整个过程。以下是 Servlet 遵循的过程: Servlet 加载—>实例化—>服务—>销毁。 1.Servlet 通过调用 init () 方法进行初始化。 2....
可以了解一下周期
主要为大家详细介绍了servlet生命周期的相关资料,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
1.创建:当用户第一次请求servlet映射的路径时,服务器会加载servlet并...该方法在servlet生命周期中,只会执行一次。 3.服务:每当用户有一个servlet请求,服务器会调用service()方法处理用户请求,哈哈,方法在生命周期
主要为大家详细介绍了Servlet生命周期与工作原理的相关资料,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
servlet生命周期详解