从Tomcat工作原理到目录结构

首先,他是一个软件,一个容器,承载项目的容器,那么这个容器的定位和用途是干什么的呢?

背景: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在运行过程中产生的临时文件

猜你喜欢

转载自blog.csdn.net/qq_36505948/article/details/80936889
今日推荐