JavaWeb学习(12): servlet 的生命周期(执行流程)
Servlet 的执行流程:
加载 和 卸载 : Servlet 容器自动处理。
加载
初始化: init() 该方法会在 Servlet被加载并实例化的以后 执行
服务 :service() ->doGet() doPost
销毁 :destroy() Servlet被系统回收时执行
卸载
各个阶段的执行次数:
加载和卸载:Servlet 容器自动处理。
init: 默认第一次访问 Servlet 时会被执行(只执行这一次)。
可以修改为在启动服务器时就自动执行。
i.Servlet2.5: web.xml
<servlet>
...
<load-on-startup>1</load-on-startup>
</servlet>
其中的“1”代表第一个。
ii.Servlet3.0
@WebServlet( value="/WelcomeServlet" ,loadOnStartup=1 )
service:(主要是 doget() 方法 和 dopost() 方法)
doGet(): 主要处理 get 提交方式的请求。
doPost(): 主要处理 Post 提交方式的请求。
调用几次,执行几次。
destroy():
关闭 Tomcat 服务器时,执行一次。
效果展示:
默认第一次访问时调用 init() 方法:
修改后服务器启动时自动调用 init() 方法:
Service 服务调用几次执行几次:
销毁时自动调用 destroy() 方法:
代码展示(3.0):
index.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<!-- 超链接默认也是 get 提交方式 -->
<a href = "WelcomeServlet">WelcomeServlet</a>
<form action="WelcomeServlet" method = "post">
<input type = "submit" value = "登录">
</form>
</body>
</html>
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...");
}
}
如果说年轻人未来是一场盛宴的话,那么我首先要有赴宴的资格。