Servlet运行在Servlet容器中,他的生命周期由Servlet容器管理。Servlet生命周期包括4个阶段:
1.加载和实例化,Servlet容器负责加载和实例化Servlet,当Servlet容器启动时,或容器检测到需要这个Servlet来响应第一个请求时,创建Servlet实例,当Servlet容器启动后,他必须要知道所需的Servlet类在什么位置,Servlet容器可以从本地文件系统,远程文件系统或者其他网络服务器中,通过类加载器加载Servlet类。成功加载后,容器会创建Servlet实例。调用的Servlet必须有一个无参构造器。
2.初始化,在Servlet实例化之后,容器必须调用Servlet的init()方法,初始化这个对象,对于每一个Servlet实例,init()方法能被调用一次,初始化期间,Servlet实例可以使用容器为它准备的ServletConfig对象,从web.xml中获取初始化的参数信息。
3.请求处理,Servlet容器调用Servlet的service()方法,对请求进行处理,要注意,service()调用之前,init()方法一定要成功执行。在service()方法中,servlet实例通过ServletRequest(随后会被转换为HttpServletRequest)获得客户端的相关信息和请求信息,对请求处理后,通过ServletRequest对象的设置响应信息。
4.服务终止,当容器检测到一个Servlet实例应该从服务中被移除的时候,容器就会调用实例的destroy()方法,释放资源。
1.加载和实例化,Servlet容器负责加载和实例化Servlet,当Servlet容器启动时,或容器检测到需要这个Servlet来响应第一个请求时,创建Servlet实例,当Servlet容器启动后,他必须要知道所需的Servlet类在什么位置,Servlet容器可以从本地文件系统,远程文件系统或者其他网络服务器中,通过类加载器加载Servlet类。成功加载后,容器会创建Servlet实例。调用的Servlet必须有一个无参构造器。
2.初始化,在Servlet实例化之后,容器必须调用Servlet的init()方法,初始化这个对象,对于每一个Servlet实例,init()方法能被调用一次,初始化期间,Servlet实例可以使用容器为它准备的ServletConfig对象,从web.xml中获取初始化的参数信息。
3.请求处理,Servlet容器调用Servlet的service()方法,对请求进行处理,要注意,service()调用之前,init()方法一定要成功执行。在service()方法中,servlet实例通过ServletRequest(随后会被转换为HttpServletRequest)获得客户端的相关信息和请求信息,对请求处理后,通过ServletRequest对象的设置响应信息。
4.服务终止,当容器检测到一个Servlet实例应该从服务中被移除的时候,容器就会调用实例的destroy()方法,释放资源。