Servlet生命周期
Servlet生命周期
- 浏览器根据地址发起调用,tomcat容器在接收到请求之后,会根据地址栏上的地址进行数据解析,会找到具体的工程,然后再定位到工程下面具体的资源。
- 定位到资源后,首先会创建当前servlet类的实例,所以调用的是无参构造方法。
- 会执行初始化init方法,初始化servlet上下文配置对象ServletConfig
- 执行service方法,service方法用来执行请求的分发处理
- 当容器关闭的时候,会执行销毁destroy方法
自定义后端资源MyServlet类
首先要在浏览器端能够访问到后端的动态资源,那么必须对该资源在web.xml中资源注册,并配置资源路径。
<!--资源注册-->
<servlet>
<!--资源名,可以随意取-->
<servlet-name>MyServlet</servlet-name>
<!--资源全类名-->
<servlet-class>com.zc.servlet.MyServlet</servlet-class>
</servlet>
<!--资源路径的配置-->
<servlet-mapping>
<servlet-name>MyServlet</servlet-name>
<!--资源路径 是浏览器访问资源时需加的路径-->
<url-pattern>/myServlet</url-pattern>
</servlet-mapping>
MyServlet必须实现Servlet接口或者继承Servlet实例,然后重写其中的方法。
import javax.servlet.*;
import java.io.IOException;
public class MyServlet implements Servlet {
public MyServlet()
{
System.out.println("servlet生命周期:1、创建Servlet实例,无参构造方法执行");
}
@Override
public void init(ServletConfig servletConfig) throws ServletException {
System.out.println("servlet生命周期:2、初始化init方法执行 初始化servlet上下文配置对象ServletConfig");
}
@Override
public ServletConfig getServletConfig() {
return null;
}
@Override
public void service(ServletRequest servletRequest, ServletResponse servletResponse) throws ServletException, IOException {
System.out.println("servlet生命周期:3、service方法执行了,用来执行请求的分发处理");
}
@Override
public String getServletInfo() {
return null;
}
@Override
public void destroy() {
System.out.println("servlet生命周期:4、destroy方法执行 销毁当前Servlet");
}
}
运行Tomcat服务器,然后在浏览器中访问此资源,可以在后端控制台中明显查看到Servlet生命周期
关闭Tomcat服务器,还可以在控制台中看到资源销毁。