Servlet生命周期相关方法:
- 构造方法
- init(ServletConfig config);
- init();//实际应在覆盖的init
- service(HttpServletRequest req,HttpServletResponse res);用到的不多,至少要知道在哪里调用
- doGet/Post/Delete/…这个必须会
源码
public class ServletLife extends HttpServlet {
private static final long serialVersionUID = 1L;
public ServletLife() {
super();
System.out.println("-----------------------------------------------ServletLife()");
}
protected void service(HttpServletRequest req,HttpServletResponse res) throws ServletException, IOException {
System.out.println("-----------------------------------------------service(request,response)");
super.service(req, res);
};
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
System.out.println("-----------------------------------------------doGet(request,response)");
System.out.println("==============================End Request=============================");
super.doGet(req, resp);
}
/**覆盖此init()在初始化时候做点事情**/
@Override
public void init() throws ServletException {
System.out.println("-----------------------------------------------init()");
super.init();
}
public void init(ServletConfig config) throws javax.servlet.ServletException {
System.out.println("-----------------------------------------------init(config)");
super.init(config);
};
@Override
public void destroy() {
System.out.println("-----------------------------------------------destory()");
super.destroy();
}
}
运行结果
-----------------------------------------------ServletLife()
-----------------------------------------------init(config)
-----------------------------------------------init()
-----------------------------------------------service(request,response)
-----------------------------------------------doGet(request,response)
==============================End Request=============================
-----------------------------------------------service(request,response)
-----------------------------------------------doGet(request,response)
==============================End Request=============================
分析结果
Servlet在(懒启动模式):
首次请求执行
- 构造方法
- init(ServletConfig config);
- init();//实际应在覆盖的init
- service(…)
- doXXX(…)
之后请求执行
- service(…)
- doXXX(…)
主要是service(…),在开发时不多见,但是在研究SpringMVC的DispatcherServlet时发现,service(…)被用到了。