详解Tomcat,你一定能看懂

2020-08-06  本文已影响0人  knowlege_picker

Tomcat

学习的第一步是先去查看官网文档,因为从中可以获得最准确的答案。对于一些概念,先存在一种假设,等文档看的差不多了,还有问题的再去百度。我还是认同这句话的,"思路先于行动,方法先于学习"。

浏览Tomcat的官网没有找到有价值的tomcat的信息,于是我去百度百科上找了一下,主要是这几点:

什么是Tomcat

  1. Tomcat 服务器是开源且轻量级的Web 应用服务器

  2. 实际上Tomcat是Apache 服务器的扩展。Tomcat具有处理HTML页面的功能

  3. Tomcat还是一个Servlet和JSP容器。可以理解为Tomcat服务器里面包含有servlet容器

容器是什么意思

看一下我写到的另一篇文章
理解Servlet、Servlet容器

Tomcat目录结构

下载tomcat之后看一下文件结构,结构如下:

/bin:二进制文件binary的缩写。存放启动和关闭Tomcat的脚本文件

/conf:config的缩写。存放Tomcat服务器的各种全局配置文件,其中最重要的是server.xmlweb.xml

/doc:存放Tomcat文档

/server:包含三个子目录:classes、lib和webapps

/server/lib:lib是library的缩写,存放各种库文件。存放Tomcat服务器所需的各种JAR文件

/server/webapps:存放Tomcat自带的两个WEB应用admin应用和 manager应用

/common/lib:存放Tomcat服务器以及所有web应用都可以访问的jar文件

/shared/lib:存放所有web应用都可以访问的jar文件(但是不能被Tomcat服务器访问)

/logs:存放Tomcat执行时的日志文件

/src:存放Tomcat的源代码

/webapps:Tomcat的主要Web发布目录,默认情况下把Web应用文件放于此目录

/work:存放JSP编译后产生的class文件

tomcat配置文件详解

Tomcat服务器是由一系列可配置的组件构成的,其中核心组件是Catalina Servlet容器,它是所有其他Tomcat组件的顶层容器。我们可以通过查看Tomcat安装文件夹下的conf文件夹中的server.xml文件 来了解Tomcat各组件之间的层次关系。由于server.xml注释太多,特简化如下:

<?xml version='1.0' encoding='utf-8'?>  
<Server port="8005" shutdown="SHUTDOWN">  
 <Service name="Catalina">
 <Connector port="8080" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" URIEncoding="UTF-8"/>
 <Engine name="Catalina" defaultHost="localhost">
 <Host name="localhost">
 <Context path="" docBase="WORKDIR" reloadable="true"/>
 </Host>
 </Engine>
 </Service>
</Server> 

其中WORKDIR为你想要导入的项目路径。我们下面简单介绍一下各组件在Tomcat服务器中的作用。

(1)Server

Server表示整个的Catalina Servlet容器。Tomcat提供了Server接口的一个默认实现,这通常不需要用户自己去实现。在Server容器中,可以包含一个或多个Service组件。

(2)Service

Service是存活在Server内部的中间组件,它将一个或多个连接器(Connector)组件绑定到一个单独的引擎(Engine)上。在Server中,可以包含一个或多个Service组件。Service也很少由用户定制,Tomcat提供了Service接口的默认实现,而这种实现既简单又能满足应用。

(3)Connector

连接器(Connector)处理与客户端的通信,它负责接收客户请求,以及向客户返回响应结果。在Tomcat中,有多个连接器可以使用。

(4)Engine

在Tomcat中,每个Service只能包含一个Servlet引擎(Engine)。引擎表示一个特定的Service的请求处理流水线。作为一个Service可以有多个连接器,引擎从连接器接收和处理所有的请求,将响应返回给适合的连接器,通过连接器传输给用户。用户允许通过实现Engine接口提供自定义的引擎,但通常不需要这么做。

(5)Host

Host表示一个虚拟主机,一个引擎可以包含多个Host。用户通常不需要创建自定义的Host,因为Tomcat给出的Host接口的实现(类StandardHost)提供了重要的附加功能。

(6)Context

一个Context表示了一个Web应用程序,运行在特定的虚拟主机中。什么是Web应用程序呢?在Sun公司发布的Java Servlet规范中,对Web应用程序做出了如下的定义:“一个Web应用程序是由一组Servlet、HTML页面、类,以及其他的资源组成的运行在Web服务器上的完整的应用程序。它可以在多个供应商提供的实现了Servlet规范的Web容器中运行”。一个Host可以包含多个Context(代表Web应用程序),每一个Context都有一个唯一的路径。用户通常不需要创建自定义的Context,因为Tomcat给出的Context接口的实现(类StandardContext)提供了重要的附加功能。

tip

日志信息出现乱码的配置:

打开 D:\Environment\tomcat-9.0.36\conf\logging.properties

修改51行为java.util.logging.ConsoleHandler.encoding = GBK

即,将utf-8改成GBK

上一篇 下一篇

猜你喜欢

热点阅读