Servlet生命周期
近期在学习javaweb方面的知识,借鉴视频教程上的例子,留作备注:
Servelet代码如下:
package com.liuxgnu; import java.io.IOException; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; public class TestServlet extends HttpServlet { /** * */ private static final long serialVersionUID = 1L; /** *构造方法 */ public TestServlet() { System.out.println("Constructor"); } /** *get请求处理 */ @Override protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { doPost(request, response); //转向post } /** *Post请求处理 */ @Override protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { System.out.println("doPost"); } /** *销毁 */ @Override public void destroy() { System.out.println("destroy"); } /** *初始化 */ @Override public void init() throws ServletException { System.out.println("init"); } }
Web.xml就不写了.
第一次请求Servlet的时候,后台打印:
Constructor
init
doPost
由此可以看出,首先执行构造方法,然后执行初始化,然后才执行Post/Get方法.
而第二次访问Servlet的时候,并没有执行构造方法和初始化方法,那就说明,这个类已经生存,且听视频上老师的讲解说”①常规Servlet容器仅生成一个Servlet对象”,有些似懂非懂的样子,但从后台打印出来的结果看,确实只生成了一个对象.
第二次请求Servlet的时候,后台打印:
Constructor
init
doPost
doPost
注解:①常规Servlet容器仅生成一个Servlet对象
非分布式情况下,一个服务器端只生成一个Servlet实例.