Tomcat整体结构简单介绍

Tomcat作为web容器广为人知,从我最开始学Java一直到现在工作,可以说是伴随了我的整个编程生涯。Tomcat的本质是一个Servlet容器。一个Servlet能做的事情是:处理请求资源,并为客户端填充response对象。

Tomcat则负责载入我们编写的Servlet类,调用Servlet的init()方法,对于一个request请求,创建一个servletRequest和一个servletResponse实例,调用该servlet的service()方法,将servletRequest和servletResponse作为参数传入,关闭该servlet时,调用destroy()并将其卸载。接下来简单介绍一下Tomcat整体的结构。

Tomcat 的总体结构

如图,Tomcat最主要的为两个组件是连接器(connector)和容器(container)。多个connector和一个container组成一个service,service用于对外提供服务,而service的生命周期由server来控制。server属于最顶层的抽象。

连接器(connector)用于处理网络连接相关的事情,如socket连接,request封装,连接线程池等工作。容器(container)主要处理 connector 接受的请求。Service 只是在 Connector 和 Container 外面多包一层,把它们组装在一起,向外面提供服务,一个 Service 可以设置多个 Connector,但是只能有一个 Container 容器。所有组件的生命周期都使用lifecycle接口统一管理,里面包含init,start,stop,destory方法。

最初的连接器(connector)只能设置成BIO模式,现在的高版本Tomcat默认的连接模式都是NIO,很大程度上了提升了请求的并发量。

容器(container)在tomcat中一共有4种形式,从顶至下依次是engine,host,context,wrapper。一个wrapper则对应一个servlet,一个context对应一个应用,一个host对应一个站点,engine是引擎,一个容器只有一个。容器之间的启动都是使用

Tomcat 容器模型

简单介绍了下Tomcat整个的结构,下面就通过Tomcat一个请求的处理流程来加深理解。假设请求为:http://localhost:8080/test/index.jsp,那么Tomcat的处理流程为

1.请求被发送到8080端口,被connector获得。

2.connector把请求交给他所在的service的engine处理,等待engine回应。

3.engine获得请求地址,匹配虚拟主机host

4.engine匹配到名为localhost的host,该host获得请求为 /test/index.jsp,匹配该host拥有的context

5.host匹配到路径为/test的context,若匹配不到则交给名为“空的context处理

6.该context获得请求/index.jsp,在映射文件中寻找对应的servlet

7.context匹配到模式为*.jsp的servlet,找到对应JspServlet类(Jsp最终会转换成Servlet)

8.构造htttpservletrequest和httpServletResponse对象,作为参数调用JspServlet的doGet或doPost

9.context把response返回给host

10.host把response返回给engine

11.engine把response返回给connector

12.connector把response返回给用户浏览器,请求结束

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。

(0)

相关推荐

  • Tomcat目录结构详细介绍

    打开tomcat的解压之后的目录可以看到如下的目录结构: 1.Tomcat的bin目录: bin目录主要是用来存放tomcat的命令,主要有两大类,一类是以.sh结尾的(linux命令),另一类是以.bat结尾的(windows命令). 很多环境变量的设置都在此处,例如可以设置JDK路径.tomcat路径 startup 用来启动tomcat shutdown 用来关闭tomcat 修改catalina可以设置tomcat的内存 2.Tomcat的conf目录: conf目录主要是用来存放tom

  • Tomcat之web应用的目录组成结构_动力节点Java学院整理

    什么是web应用的组成结构?简单的说就是如何存放网站中的各个文件. 开发web应用时,不同类型的文件有严格的存放规则, 文件放错位置时可能会使web应用无法访问,也可能导致web服务器启动报错. web应用组织形式: 1)给web应用建个根文件夹,如MyWeb,则应该将xxx.html,xxx.jsp,xxx.css,xxx.js等放到MyWeb里面 2)在MyWeb下建个文件夹WEB-INF //注意文件名一定是WEB-INF,一个字都不能错 将web.xml文件放到WEB-INF里面 //w

  • tomcat目录结构简介_动力节点Java学院整理

    tomcat目录结构简介 如果我们有一个web应用,名称为"mail"(同时也是web应用所在目录的名称),那么其目录内不同类型的文件应该服从如下放置的规则: 一般来讲: 对于html.jsp.css.js文件等,可以直接放置在web应用所在目录中,当然如果某些文件比较多,可以另外创建一些目录来存放. 而对于除了上述几种文件外,一些不希望被外界能访问到的文件必须放在[WEB-INF]目录中,文件名不许更改,纯大写,一点不能有区别,否则必定出错,而在这个目录下会存放一些我们开发所需的Ja

  • Tomcat体系结构与插件配置教程图解

    一.发布程序详解 Context docBase:web应用的文件路径   path:URL入口   reloadable:字节码变化服务器是否重新加载web应用 二.tomcat服务器体系结构 1.Server整个Servlet容器组合,可以包含一个或多个<Service> 2.service:它由一个或者多个Connector组成,以及一个Engine,负责处理所有Connector所获得的客户请求. 3.Connector:客户端与程序交互组件,负责接收请求以及向客户端返回响应. 4.E

  • Tomcat整体结构简单介绍

    Tomcat作为web容器广为人知,从我最开始学Java一直到现在工作,可以说是伴随了我的整个编程生涯.Tomcat的本质是一个Servlet容器.一个Servlet能做的事情是:处理请求资源,并为客户端填充response对象. Tomcat则负责载入我们编写的Servlet类,调用Servlet的init()方法,对于一个request请求,创建一个servletRequest和一个servletResponse实例,调用该servlet的service()方法,将servletReques

  • jsp中存取session值简单介绍

    我们在jsp中会操作一些表单的值.或者获得用户的值操作,那么我们就可以使用jsp的作用域操作,1.page.request.session.application这四个作用域,其中最常用的便是request和session的域操作. 使用session域操作,因为使用的web容器是Tomcat服务器,而session只要不关闭浏览器,它就会一直存在不会消失,还是就是时间的默认限制30分钟,那么接下来便是在jsp中使用session, <%@ page language="java"

  • Java基础之简单介绍一下Maven

    一.Maven是什么? Maven是一个跨平台的项目管理工具.作为Apache组织的一个颇为成功的开源项目,其主要服务于基于Java平台的项目创建,依赖管理和项目信息管理,是一个自动化构建工具.maven是Apache的顶级项目,解释为"专家,内行",它是一个项目管理的工具,maven自身是纯java开发的( Theresult is a tool that can now be used for building and managing any Java-basedproject)

  • Linux系统上实现定时重启Tomcat服务脚本介绍

    目录 一.创建Shell脚本 二.修改文件权限 三.建立定时任务 四.定时任务描述语法 1. 星号(*) 2. 逗号(,) 3. 斜杠(/) 4. 横杠(-) 五.其他 因为使用阿里云部署服务器应用时,Tomcat服务经常由于内存不足出现OutOfMemoryError异常的情况.经常过几天就需要重启一次服务器,更要命的是不知道什么时候会由于内存不足导致无法访问,如果重启不及时严重影响系统体验. 为了解决上述问题,一方面是对tomcat配置做一些优化,网上有很多文章讲解如何优化Tomcat内存设

  • Atom-IDE 的使用方法简单介绍

    Atom-IDE 的使用方法简单介绍 今日,GitHub 宣布与 Facebook 合作推出了 Atom-IDE -- 它包括一系列将类 IDE 功能带到 Atom 的可选工具包. 初次发布的版本包括更智能.感知上下文的自动完成:导航功能,如大纲视图和 goto-definition,以及其他有用的功能:还包括错误.警告提醒和格式化文档功能. 查看 Atom 博客以了解更多. Atom-IDE 包括适用于 C#, Flow, Java, JavaScript, PHP, 和 TypeScript

  • Eclipse代码格式化设置简单介绍

    自用项目中统一Eclipse格式化Java.JavaScript.JSP.HTML代码设置 1.Window->Preferences //Java 格式化 2.Java->Code Style->Formatter->New->Edit->Line Wrapping 3.Maximum Line width = 180 4.Set line width for preview window = 180 //JavaScript 格式化 5.JavaScript->

  • JSP状态管理的简单介绍

    JSP状态管理的简单介绍 一 http协议的无状态性 无状态性是指:当浏览器发送请求给服务器时,服务器响应客户端请求. 但是当同一个浏览器再次发送请求给服务器的时候,服务器并不知道它就是刚才那个浏览器. 简单地说,就是服务器不会去记得你,所以就是无状态协议. 二 保存用户状态的两大机制 Session Cookie 三 Cookie概述 Cookie:中文名称为"小甜饼",是Web服务器保存在客户端的一系列文本信息. 典型应用一:判断注册用户是否已经登录网站. 典型应用二:"

  • 权限控制之粗粒度与细粒度概念及实现简单介绍

    本文简单介绍了权限控制之粗粒度与细粒度概念及实现,下面看看具体内容. 1.   什么是粗粒度和细粒度权限 粗粒度权限管理,对资源类型的权限管理.资源类型比如:菜单.url连接.用户添加页面.用户信息.类方法.页面中按钮.. 粗粒度权限管理比如:超级管理员可以访问户添加页面.用户信息等全部页面. 部门管理员可以访问用户信息页面包括 页面中所有按钮. 细粒度权限管理,对资源实例的权限管理.资源实例就资源类型的具体化,比如:用户id为001的修改连接,1110班的用户信息.行政部的员工. 细粒度权限管

  • json简单介绍

    JSON简单介绍: 所谓的JSON是JavaScript Object Notation的缩写,意思是javascript对象表示法. 下面对JSON做一下总结: (1).JSON指的是javascript对象表示法,是JavaScript Object Notation的缩写. (2).JSON是轻量级的文本数据交换格式. (3).JSON是独立于平台和语言的. (4).JSON是具有自我描述性,非常易于理解. 特别说明:JSON是一种用来规范字符串数据格式的语法. 代码实例: 实例一: {"

  • 关于RequireJS的简单介绍即使用方法

    RequireJS介绍 RequireJS 是一个JavaScript模块加载器.它非常适合在浏览器中使用.使用RequireJS加载模块化脚本将提高代码的加载速度和质量. 兼容性 浏览器(browser) 是否兼容 IE 6+ 兼容 ✔ Firefox 2+ 兼容 ✔ Safari 3.2+ 兼容 ✔ Chrome 3+ 兼容 ✔ Opera 10+ 兼容 ✔ 优点 实现js文件的异步加载,避免网页失去响应 管理模块之间的依赖性,便于代码的编写和维护 快速上手 step 1 引入require

随机推荐