首先,他是一个软件,一个容器,承载项目的容器,那么这个容器的定位和用途是干什么的呢?
背景:JSP出现后,阿帕奇项目组为了提供一个兼容JSP和Servlet而开发的容器,最初名字叫做 “CALATINA”
===========================================================================
Tomcat启动后,当用户代理向Tomcat发送请求,请求到达Tomcat,会被Tomcat检测到,流程如下:
在tomcat的配置文件conf里面存在着一个server.xml文件,其配置了Tomcat了的工作流程,tomcat启动后会一直运行着该文件!
server:
用来监听和关闭所有敢于Tomcat的请求和命令,也是所有 组件标签 的大标签,相当于组件容器
组件标签如下:
Service:
命名Tomcat的名称,一般不做任何变动,为什么叫catalina是因为Tomcat的前身名称就是catalina
Connector:
指定端口,http协议版本,超时时间,重定向端口,请求的外来编码,处理请求的线程数(最大/最小),
超时时间等配置,用于接收用户代理与tomcat的连接
可以有多个Connector存在
Engine:
处理引擎,用于指定那个接受请求的Tomcat所在的主机名,其本质是一个Servlet引擎,当请求到达
此处后,会调用servlet程序进行调用转发,唯一一个引擎
Realm:作为处理引擎中的子组件,负责安全上下文的处理,并匹配到对应的context中
Host:在引擎里面存在着Host组件标签,可以简单理解每一个 Host组件标签 都是一个处理程序的 模板,而
Engine在指定defaultHost时候至少要跟其中一个Host组件标签里的name保持一致,代表指定处理
该模板!一个Host就是一个虚拟机
Conext:每一个Context都代表了一个Web项目,配置了该项目的虚拟路径,物理路径,是否热加载等功能
docBase:物理路径,表示该web应用程序的路径或者是WAR文件存放的路径
path:虚拟路径,表示此web应用程序的url的前缀,组成固定的HTTP请求:http://localhost:8080/path/xxx
reloadable: 决定Tomcat是否会自动检测web程序的/WEB-INF/lib 和/WEB-INF/classes目录,实现热部署,布尔值
Value:实现文件和请求的过滤功能
Logger: 用于记录Tomcat的运行日志
className 指定logger使用的类名,此类必须实现org.apache.catalina.Logger 接口
prefix 指定log文件的前缀 , suffix 指定log文件的后缀
timestamp 如果为true,则log文件名中要加入时间
运行流程如下:
Tomcat启动后,Service组件会一直监听着维护(关闭)的端口。当有请求到达Connect的时候(8080),那么Connector就会接受并判断是否符合。如果符合则接通并转发给Engine这Servlet引擎。引擎的子模块会其进行上下文处理,文件过滤等, 然后根据引擎维护的host参数连接向对应的Host组件标签。Host标签根据维护的Context进入项目,一个Context就是一个项目!由Context负责接收客户请求和响应请求,这个过程中Context根据请求匹配到对应的Servlet类,然后由这个Servlet类并构造HttpServletResponse和HttpServletRequest给到Servlet的doPost/doGet方法,执行完成后再原路把response容器返回给tomcat!tomcat原路返回给用户代理!
注意:Service监听的端口不是请求到达的端口而是tomcat关闭的端口
===========================================================================
Tomcat的物理结构
|---bin 用于存放启动和关闭tomcat脚本
|---conf 存放不同的配置文件(server.xml和web.xml和tomcat_users.xml)
|---doc:存放Tomcat文档(英文)
|---lib/japser/common:存放Tomcat运行需要的库文件(JARS);
|---logs:存放Tomcat执行时的LOG文件;
|---src:存放Tomcat的源代码,一般的安装包不会提供
|---webapps:Tomcat的主要Web发布目录(编译后的项目),Context指向的地方,ROOT是程序未启动三角猫首页图片等信息的地方
|---work:存放jsp编译后产生的class文件;
|---temp:用户存放tomcat在运行过程中产生的临时文件