Servlet工作原理(及生命周期图解)

Servlet工作原理(及生命周期图解)-mikechen

Servlet是运行在Servlet容器中的,由Servlet容器来负责,Servlet实例的查找、创建及整个生命周期的管理。

Servlet工作原理(及生命周期图解)-mikechen

HTTP服务器不直接和业务类交互,而是把请求先交给Servlet容器,Servlet容器内部将请求转发到具体Servlet。

Servlet接口和Servlet容器这一整套规范叫作Servlet规范,Tomcat按Servlet规范要求实现了Servlet容器,又兼备HTTP服务器功能。

若实现新业务,只需实现一个Servlet,并把它注册到Tomcat(Servlet容器),剩下的事情就由Tomcat帮忙来解决即可。

 

Servlet的生命周期

Servlet工作原理(及生命周期图解)-mikechen

public interface Servlet {
    void init(ServletConfig var1) throws ServletException;
 
    void service(ServletRequest var1, ServletResponse var2) throws ServletException, IOException;
 
    void destroy();

 

1.创建servlet 的实例

默认情况下:第一次访问servlet或启动服务器时创建servlet 的实例,如果servlet需要进行一些复杂的操作,需在初始化时就完成。

 

2.初始化init

void init(ServletConfig var1) throws ServletException;

一旦Servlet实例被创建,将会调用Servlet的init方法,但是这个方法在后续的请求中不会再次被调用,仅仅只会调用一次,同事传入ServletConfig实例,对Servlet对象进行初始化。

 

3.服务Service

@Override
    public void service(ServletRequest req, ServletResponse res) throws ServletException, IOException {
        super.service(req, res);
    }

每一个请求在Servlet容器中都会产生一个线程来调用Service方法,但需要注意每个线程也共享Servlet对象的成员变量。

每次请求都调用service方法,根据请求方式调用doGet()或doPost()方法。

 

4.销毁destory

@Override
    public void destroy() {
        super.destroy();
    }

服务器关闭时会调用destory方法,销毁Servlet实例。

 

陈睿mikechen

10年+大厂架构经验,资深技术专家,就职于阿里巴巴、淘宝、百度等一线互联网大厂。

关注「mikechen」公众号,获取更多技术干货!

后台回复面试即可获取《史上最全阿里Java面试题总结》,后台回复架构,即可获取《阿里架构师进阶专题全部合集

评论交流
    说说你的看法