关于Servlet的生命周期
以下我们写一个一个html,和一个简单的Servlet,然后在html页面上以dopost方式来提交表单来访问Servlet的dopost函数,然后分析Servlet的生命周期
这个工程的名字: TestLifeCyecleServlet
index.html:
- <html>
- <body>
- This is my JSP page. <br>
- <form action="LifeCycleServlet" method="post">
- <input type=submit value="mySubmit">
- </form>
- </body>
- </html>
action="LifeCycleServlet"
所以这个表单提交的目标是: http://localhost:8080/TestLifeCyecleServlet/LifeCycleServlet
再看看我们的Servlet: LifeCycleServlet
LifeCycleServlet.java:
- package myServlet;
- import java.io.IOException;
- import javax.servlet.ServletConfig;
- import javax.servlet.ServletException;
- import javax.servlet.http.HttpServlet;
- import javax.servlet.http.HttpServletRequest;
- import javax.servlet.http.HttpServletResponse;
- public class LifeCycleServlet extends HttpServlet {
- /**
- *
- */
- privatestatic final long serialVersionUID = 1L;
- publicLifeCycleServlet() {
- //TODO Auto-generated constructor stub
- System.out.println("Constructor......");
- }
- @Override
- protectedvoid doPost(HttpServletRequest req, HttpServletResponse resp)
- throwsServletException, IOException {
- //TODO Auto-generated method stub
- System.out.println("doPost;");
- }
- @Override
- publicvoid destroy() {
- //TODO Auto-generated method stub
- System.out.println("detroy");
- }
- @Override
- publicvoid init() throws ServletException {
- //TODO Auto-generated method stub
- System.out.println("init()");
- }
- @Override
- publicvoid init(ServletConfig config) throws ServletException {
- //TODO Auto-generated method stub
- System.out.println("init(config)");
- super.init(config);
- }
- }
我们要用Servlet,一般都要在web.xml里配置的:
- <servlet>
- <servlet-name>LifeCycleServlet</servlet-name>
- <servlet-class>myServlet.LifeCycleServlet</servlet-class>
- </servlet>
- <servlet-mapping>
- <servlet-name>LifeCycleServlet</servlet-name>
- <url-pattern>/LifeCycleServlet</url-pattern>
- </servlet-mapping>
表示这个LifeCycleServlet的访问地址为: http://localhost:8080/TestLifeCyecleServlet/LifeCycleServlet
主页面:index.html
第一次提交表单后:
然后再提交N次后:
然后我们在Tomcat下停止这个工程后:
Constructor......
init(config)
init()
doPost;
doPost;
doPost;
doPost;
2011-11-2 10:59:08org.apache.catalina.startup.HostConfig checkResources
信息: Reloading context [/TestLifeCyecleServlet]
Detroy
我们会发觉,这个项目由部署到Remove部署,由始至终这个Servel只到构造并初始化一次(第一次被访问的那个时候被构造,也就是第一次提交表单时被构造,不提交不构造)
Constructor
init(config)
init() //用户的自定义初始化
然后每将提交表单,这个Servlet就会响应一次dopost,无论以后有多少个用户提交表单,这个Servlet就只管响应就可以了…
最后,这个项目被Remove部署后, Detroy就会被调用….
所以这个Servlet的生命周期是这个Servlet被访问时构造,项目被Remove部署时才终止