servlet生命周期

来源:互联网 发布:win7打开23端口 编辑:程序博客网 时间:2024/06/14 08:31

 1.Servlet运行在Servlet容器中,其生命周期由容器来管理。Servlet的生命周期通过

avax.servlet.Servlet接口中的init(初始化)、service(处理请求)和destroy(销毁)方法来表示。

(1)加载和实例化

Servlet容器负责加载和实例化Servlet。当Servlet容器启动时,或者在容器检测到需要这个Servlet来响应第一个请求时,创建Servlet实例

(2)初始化

在Servlet实例化之后,容器将调用Servlet的init()方法初始化这个对象。初始化的目的是为了让Servlet对象在处理客户端请求前完成一些初始化的工作,如建立数据库的连接,获取配置信息等。对于每一个Servlet实例,init()方法只被调用一次。在初始化期间,Servlet实例可以使用容器为它准备的ServletConfig对象从Web应用程序的配置信息(在web.xml中配置)中获取初始化的参数信息  。

初始化方法调用一次

(3)请求处理

Servlet容器调用Servlet的service()方法对请求进行处理。要注意的是,在service()方法调用之前,init()方法必须成功执行。在service()方法中,Servlet实例通过ServletRequest对象得到客户端的相关信息和请求信息,在对请求进行处理后,调用ServletResponse对象的方法设置响应信息此后对该实例的任何请求,都将收到容器发送的HTTP 404(请求的资源不可用) 响应HTTP 503(服务器暂时忙,不能处理请求)响应。

  Service有两个参数(ServletRequest和ServletResponse),ServletRequest保存了客户向服务器发送的请求,而ServletResponse用来设置如何对客户进行响应。
Service:发火doget 
                 哭dopost
form中可以写是用method="get"还是method="post"get的话调用doGet()url显示:http://xx.xx.xx/xxxServlet?username=abc+password=abcpost的话调用doPost()url显示:http://xx.xx.xx/xxxServlet
不管是post还是get方法提交过来的连接,都会在service中处理,然后,由service来交由相应的doPost或doGet方法处理,如果你重写了service方法,就不会再处理doPost或doGet了。



请求方法调用一次或者 多次

(4)服务终止

当容器检测到一个Servlet实例应该从服务中被移除的时候,容器就会调用实例的destroy()方法,以便让该实例可以释放它所使用的资源,保存数据到持久存储设备中。当需要释放内存或者容器关闭时,容器就会调用Servlet实例的destroy()方法

销毁方法调用一次
原创粉丝点击