Servlet和Tomcat底层分析

  • Servlet源码解析分析
    1 Servlet技术的结构图
    Servlet和Tomcat底层分析_第1张图片
    Servlet技术中的三大接口有Servlet,ServletConfig和Serializable,而GenericServlet抽象类实现了这三个顶层接口,最后HttpServlet类实现了GenericServlet抽象类,所以要首先一个Servlet直接继承HttpServlet,

  • Servlet接口简介
    这个Servlet接口就是servlet技术的规范:其中有5大规范
    1 init(); 该方法负责初始化Servlet对象,创建好Servlet对象之后就调用这个方法来初始化该对象,
    2 service();该方法是处理客户端的请求并返回响应,当接收到请求时就会调动该方法,
    3 destory();该方法是负责释放Servlet对象占用的资源,当servelt对象结束生命周期时调用该方法销毁servlet对象,
    4 getServletInfo(); 该方法返回Servlet的创建者,版本和版权,
    5 getServetConfig();该方法返回servlet初始化参数,

  • ServletConfig接口介绍
    作用就是在servlet中如何获取配置信息的,有四个抽象方法:
    1 getServletName();用于获取Servlet名字,web.xml中定义的servelt-name;
    2 getServletContext();用于获取Servlet上下文对象,
    3 getInitParameter();获取初始化信息;

  • GenericServlet抽象类
    这个抽象类是servlet的默认实现,是与具体协议无关,

  • 基于协议的HttpServlet抽象类
    它是一个抽象类,但是他没有抽象方法,他不能实例化,那么如果处理请求和作出响应这个类没有定义,那就需要我们自己继承这个类来自定义实现具体的处理方法,
    有处理协议相关的请求方法:doGet(), doPost()方法,service方法
    HttpServlet是基于Http协议实现Servlet基类,我们编写servlet时直接继承他就可以了,springmvc中的dispatchServlet就是继承httpServlet,这个类主要就是用来根据协议来进行不同的处理,

  • tomcat 架构图
    1 Server就是tomcat
    2 Server包含了多个Service,
    3 Service中有connector组件和engine组件
    4 engine中包含了host主机,
    5 host里面有listener监听器,context对象,
    6 context对象中包含了webapp

Server就是服务器的意思,代表了整个tomcat,一个tomcat中只有一个server,
Server组件中至少有一个Service组件,用来提供具体的服务,也有对应的Server配置文件,
Service是一个逻辑层,用来接收客户端请求,解析请求,完成对应的逻辑处理,
connector是一个连接器,处理客户端连接,封装成Request和Response,然后交给Container进行处理,
container是一个处理逻辑的组件里面有engine,host,context,
engine表示整个Servlet引擎,
host 代表一个站点,虚拟主机,是服务器运行实例,在host里面自动扫描webapps目录,war包自动解压自动部署。
content 代表应用程序,就是web程序,每一个运行的webapp最终都是以Context的形式存在,每一个Context都有一个根路径和请求路径,
webapps下的每一个目录都是一个应用,Root目录中存放主应用,webapps是一个站点,
Servlet和Tomcat底层分析_第2张图片

你可能感兴趣的:(服务器,tomcat,java)