JavaWeb学习(12): servlet 的生命周期(执行流程)

Servlet 的执行流程:

加载 和 卸载 : Servlet 容器自动处理。

加载
初始化: init()      该方法会在 Servlet被加载并实例化的以后 执行
服务  :service()    ->doGet()  doPost
销毁  :destroy()    Servlet被系统回收时执行
卸载

JavaWeb学习(12): servlet 的生命周期(执行流程)_第1张图片

各个阶段的执行次数:

加载和卸载:Servlet 容器自动处理。
  
init: 默认第一次访问 Servlet 时会被执行(只执行这一次)。
      可以修改为在启动服务器时就自动执行。
            i.Servlet2.5:  web.xml
		  
			...
			 1
			
		其中的“1”代表第一个。
	ii.Servlet3.0
		@WebServlet( value="/WelcomeServlet" ,loadOnStartup=1  )
service:(主要是 doget() 方法 和 dopost() 方法)
    doGet(): 主要处理 get 提交方式的请求。
    doPost(): 主要处理 Post 提交方式的请求。

    调用几次,执行几次。
destroy():
    关闭 Tomcat 服务器时,执行一次。

效果展示:

默认第一次访问时调用 init() 方法:

JavaWeb学习(12): servlet 的生命周期(执行流程)_第2张图片

修改后服务器启动时自动调用 init() 方法:

JavaWeb学习(12): servlet 的生命周期(执行流程)_第3张图片

Service 服务调用几次执行几次:

JavaWeb学习(12): servlet 的生命周期(执行流程)_第4张图片

销毁时自动调用 destroy() 方法:

JavaWeb学习(12): servlet 的生命周期(执行流程)_第5张图片

代码展示(3.0):

index.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>




Insert title here


		
		WelcomeServlet
		
		

WelcomeServlet.java

package org.servlet3;

import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

// loadOnStartup = 1 : 修改为Tomcat服务器启动时自动调用 init() 方法
@WebServlet(value = "/WelcomeServlet" ,loadOnStartup=1)
public class WelcomeServlet extends HttpServlet {
	private static final long serialVersionUID = 1L;
	
	@Override
	public void init() throws ServletException {
		System.out.println("init...");
	}
	
	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		System.out.println("doGet...");
	}
	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		System.out.println("doPost...");
//		doGet(request, response);
	}
	
	@Override
	public void destroy() {
		System.out.println("destroy...");
	}

}

你可能感兴趣的:(JavaWeb学习(12): servlet 的生命周期(执行流程))