Servlet
maiaimei 2021/2/25 Java
# Servlet 生命周期
主要体现在三个方法上,init、service和destroy。
# 初始化阶段
Servlet容器加载Servlet,加载完成后,Servlet容器会创建一个Servlet实例,并调用init方法。init方法只会调用一次。Servlet容器会在以下几种情况下装载Servlet:
1、在Servlet容器启动时自动装载某些Servlet,如SpringBoot启动类做的事情;
2、在Servlet容器启动后,客户端首次向Servlet发送请求;
3、Servlet类文件被更新后,重新装载。
# 处理客户端请求阶段
每收到一个客户端请求,服务器都会产生一个新的线程去处理。
# 终止阶段
当Servlet容器终止运行,或者Servlet重新装载Servlet新实例时,Servlet容器会调用Servlet的destroy方法,由JVM的垃圾回收器进行垃圾回收的。
# Servlet 工作原理
客户端发送一个请求,Servlet调用service方法对请求进行响应。
Servlet和GenericServlet是不特定于任何协议的,所以Servlet和GenericServlet接口中没有doGet、doPost等方法。
HttpServlet是特定于Http协议的,在service方法中,将ServletRequest,ServletResponse强转为HttpRequest和HttpResponse,最后调用自己的service方法去完成响应。service方法会对请求的方法进行匹配,进入相应的逻辑层,完成请求的响应。
# Servlet 隐射路径
隐射路径优先级:完全路径匹配 > 目录匹配 > 扩展命名匹配