Servlet详解(定义作用及原理图解)

Servlet详解(定义作用及原理图解)-mikechen

Servlet简介

Servlet是一种基于Java技术的Web组件,用于生成动态内容,由容器管理,是 Java 的一套技术标准。

Servlet主要运行在服务器端,并由服务器执行调用,是一种按照Servlet标准开发的类。

简单的讲,Servlet就是运行在服务器上的一个小程序,用来处理服务器接收到的请求。

 

Servlet作用

使用 Servlet你可以收集来自网页表单的用户输入,呈现来自数据库,或者其它源的记录,还可以动态创建网页。

早期的Servlet的作用十分复杂,即承担处理数据的作用,又承担展示页面的作用,导致代码的耦合性过高不易于维护。

后期随着了MVC思想的出现,也就是模型 – 界面 – 控制器思想,极大的简便了开发,也明确了Servlet的作用,如下图所示:

Servlet详解(定义作用及原理图解)-mikechen

根据上图我们可以知道,Servlet在其中承担的作用是Controller控制器,起到对数据进行操作的作用。

 

Servlet的工作原理

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年+大厂架构经验,BAT资深面试官,就职于阿里巴巴、淘宝、百度等一线互联网大厂。

👇阅读更多mikechen架构文章👇

阿里架构 |双11秒杀 |分布式架构 |负载均衡 |单点登录 |微服务 |云原生 |高并发 |架构师

以上

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

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

评论交流
    说说你的看法