Servlet 生命周期
一、servlet的生命周期是什么?
servlet的生命周期分为三个阶段:
1.初始化阶段:调用 init() 方法。
2.响应用户请求阶段:调用service() 方法。
3.终止阶段:调用destory() 方法。
二、servlet的工作原理是什么?
1.servlet接受和响应用户请求的过程。
servlet接受用户的请求。
servlet调用service()方法,service()方法中对请求方式进行匹配,选择调用doPost方法还是doGet方法。
进入doPost方法或者doGet方法调用业务逻辑层的方法,实现对客户的响应。
2.接口调用
首先,用户自定义的servlet必须要实现Servlet接口。因为Servlet接口中定义了五个方法,涉及到了servlet的生命周期。分别是init(),service(),destory().
其次,GenericServlet实现了Servlet接口,HttpServlet继承于GenericServlet。
再次,GenericServlet是一个通用的,不特定于任何协议的Servlet. HttpServlet是特定于HTTP协议的类。
并且GenericServlet和Servlet接口中并没有定义dopost方法和doget方法,HttpServlet定义了这些方法。
因此,我们用户自定义的servlet只需要继承HttpServlet即可。
3.重写dopost和doget
HttpServlet实现了servlet接口中的service方法,将请求ServletRequest,ServletResponse强转为HttpRequest和HttpResponse。
HttpServlet本身定义的doGet,doPost方法,都是返回error信息。因此用户自定义的servlet 方法都需要重写dopost和doget方法。
三、初始化阶段:
servlet容器装载servlet。
servlet容器装载servlet之后,创建一个servlet实例,调用servlet的init() 方法进行初始化。
注:servlet容器装载servlet的情况,有以下三种:
情况1:servelet容器自动装载某些servlet。实现自动装载,只需要在web.xml文件中的<Servlet></servlet>中间添加如下代码:<loadon - startup>1</loadon - startup>
情况2:Servlet容器启动后,客户首次向servlet发送请求。
情况3:Servlet类文件被更新后,重新装载servlet。
在Servlet的整个生命周期内,init()方法只被调用一次。
四、响应阶段:
1.对于到达servlet的请求,servlet容器会创建特定于这个请求的servletRequest对象和responseRquest对象。servletRequest封装了用户的请求信息。
2.servlet 调用service方法 : public void service(ServletRequest req,ServletResponse res).
将请求ServletRequest,ServletResponse强转为HttpRequest和HttpResponse。
并调用自己的service方法调相应的dopost方法或者doget方法。
3.处理完请求之后,通过ServletResponse对象向客户返回响应信息。
五、终止阶段:
当Tomcat关闭时候,servlet容器会调用destroy方法,释放其占用的资源。