Tomcat服务
一、Tomcat概述
1、Tomcat介绍
Tomcat是Apache 软件基金会(Apache Software Foundation)的Jakarta 项目中的一个核心项目,由Apache、Sun 和其他一些公司及个人共同开发而成。由于有了Sun 的参与和支持,最新的Servlet 和JSP 规范总是能在Tomcat 中得到体现,Tomcat 5支持最新的Servlet 2.4 和JSP 2.0 规范。因为Tomcat 技术先进、性能稳定,而且免费,因而深受Java 爱好者的喜爱并得到了部分软件开发商的认可,成为目前比较流行的Web 应用服务器。
Tomcat 服务器是一个免费的开放源代码的Web 应用服务器,属于轻量级应用服务器,在中小型系统和并发访问用户不是很多的场合下被普遍使用,是开发和调试JSP 程序的首选。对于一个初学者来说,可以这样认为,当在一台机器上配置好Apache 服务器,可利用它响应HTML(标准通用标记语言下的一个应用)页面的访问请求。实际上Tomcat是Apache 服务器的扩展,但运行时它是独立运行的,所以当你运行tomcat 时,它实际上作为一个与Apache 独立的进程单独运行的。
2、Tomcat历史
-
Tomcat 最初由Sun公司的软件架构师 James Duncan Davidson 开发,名称为“JavaWebServer”。
-
1999年,在 Davidson 的帮助下,该项目于1999年于apache软件基金会旗下的JServ项目合并,并发布第一个版本(3.x),即是现在的Tomcat,该版本实现了Servlet2.2和JSP 1.1规范 。
-
2001年,Tomcat 发布了4.0版本, 作为里程碑式的版本,Tomcat 完全重新设计了其架构,并实现了Servlet 2.3和JSP 1.2规范。
-
目前 Tomcat 已经更新到 10.0.x版本,但是目前企业中的Tomcat服务器,主流版本还是7.x 和 8.x,所以本课程是基于 8.5 版本进行讲解。
二、Tomcat原理分析
1、Http工作原理
HTTP协议(超文本传输协议)是浏览器与服务器之间的数据传送协议。作为应用层协议,HTTP是基于TCP/IP协议来传递数据的(HTML文件、图片、查询结果等),HTTP协议不涉及数据包(Packet)传输,主要规定了客户端和服务器之间的通信格式。它的整个过程如下图所示:
-
用户通过浏览器进行了一个操作,比如输入网址并回车,或者是点击链接,接着浏览器获取了这个事件。
-
浏览器向服务端发出TCP连接请求。
-
服务程序接受浏览器的连接请求并经过TCP三次握手建立连接。
-
浏览器将请求数据打包成一个HTTP协议格式的数据包。
-
浏览器将该数据包推入网络,数据包经过网络传输,最终达到端服务程序。
-
服务端程序拿到这个数据包后,同样以HTTP协议格式解包,获取到客户端的意图。
-
得知客户端意图后进行处理,比如提供静态文件或者调用服务端程序获得动态结果。
-
服务器将响应结果(可能是HTML或者图片等)按照HTTP协议格式打包。
-
服务器将响应数据包推入网络,数据包经过网络传输最终达到到浏览器。
-
浏览器拿到数据包后,以HTTP协议的格式解包,然后解析数据,假设这里的数据是 HTML。
-
浏览器将HTML文件展示在页面上。
2、Tomcat整体架构
(了解)
Tomcat要实现两个核心功能:
-
处理Socket连接,负责网络字节流与Request和Response对象的转化。
-
加载和管理Servlet,以及具体处理Request请求。
因此Tomcat设计了两个核心组件连接器(Connector)和容器(Container)来分别做这 两件事情。连接器负责对外交流,容器负责内部处理。
3、Coyote连接器架构
Coyote是Tomcat的连接器框架的名称 , 是Tomcat服务器提供的供客户端访问的外部接口。客户端通过Coyote与服务器建立连接、发送请求并接受响应 。
Coyote封装了底层的网络通信(Socket请求及响应处理),为Catalina容器提供了统一的接口,使Catalina容器与具体的请求协议及IO操作方式完全解耦。Coyote 将Socket输入转换封装为Request对象,交由Catalina容器进行处理,处理请求完成后,Catalina通过Coyote提供的Response对象将结果写入输出流 。
Coyote作为独立的模块,只负责具体协议和IO的相关操作,与Servlet规范实现没有直接关系,因此即便是Request和Response对象也并未实现Servlet规范对应的接口, 而是在Catalina中将他们进一步封装为ServletRequest和ServletResponse。
4、Catalina容器架构
Tomcat的模块分层结构
Tomcat本质上就是一款 Servlet 容器,因此Catalina 才是 Tomcat 的核心,其他模块都是为Catalina提供支撑的。比如:通过Coyote模块提供连接通信,Jasper 模块提供JSP引擎,Naming 提供JNDI 服务,Juli提供日志服务。
Catalina的主要组件结构(背会)
三、Tomcat安装与配置
1、单实例安装
环境准备
关闭防火墙
关闭安全上下文
Tomcat下载与安装
Tomcat
Tomcat启动与关闭
启动
关闭
Toncat启动验证
实现通过8080端口对Tomcat自带程序的访问