Servlet的生命周期有四个阶段:
(1)加载和实例化:
Servlet由容器创建,实例化后就进入了生命周期阶段。
(2)初始化Servlet:
在这个阶段会调用init()方法,这个方法只会被调用一次,我们可以通过WebServlet注解的loadInStartup属性唉,让Servlet在被容器创建的时候初始化
(3)请求处理阶段:
在这个阶段,会调用service()方法,容器会根据请求中的URL找到正确的Servlet,然后创建两个对象,HttpServletRequest和HttpServletResponse,在创建一个新的线程,在线程中调用service()方法。
(4)销毁和卸载Servlet
当容器决定不再需要Servlet实例时,它将在Servlet实例上调用destroy()方法,Servlet在该方法中释放资源
package com.zhengshanming;
import javax.servlet.*;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import java.io.IOException;
@WebServlet(urlPatterns = "/aa", loadOnStartup = 1)
public class Servlet2 implements Servlet { //继承Servlet接口
/*
* 初始化方法
* 1.调用时机:默认情况下,Servlet第一次被访问时调用
* loadInServlet:
* 2、调用次数:1次
* */
@Override
public void init(ServletConfig servletConfig) throws ServletException {
System.out.println("init....");
}
@Override
public ServletConfig getServletConfig() {
return null;
}
/*
* 提供服务
* 调用时机:每一Servlet被访问时,调用
* 调用次数:多次
* */
@Override
public void service(ServletRequest servletRequest, ServletResponse servletResponse) throws ServletException, IOException {
//service方法对每个客户请求的资源器调用一次该方法,它允许Servlet为请求提供响应
System.out.println("Servlet Hello word!");
//根据请求的方式不同,进行分别比较
HttpServletRequest request = (HttpServletRequest) servletRequest;
//1.获取方式
String method = request.getMethod();
//2.判断
if ("GET".equals(method)) {
} else if ("POST".equals(method)) {
}
}
@Override
public String getServletInfo() {
return null;
}
/*
* 销毁方法
* 调用时机:内存释放或者服务器关闭时,Servlet对象被销毁,调用
* 调用次数:1次
* */
@Override
public void destroy() {
System.out.println("destroy");
}
}