Tomcat入门

Tomcat目录层次结构

$CATALINA_HOME地址指的是Tomcat的安装根目录。如果启用了多实例,那么每个实例可以设置一个$CATALINA_BASE路径。需要在操作系统中设置(如win在PATH下添加)。根目录下几个关键的文件夹:

  • bin:存放启动和关闭Tomcat的脚本文件(startup, shutdown等)
  • conf:存放Tomcat服务器的配置文件(如container的配置文件server.xml)
  • logs:存放日志文件
  • webapps:web应用所在的目录

Tomcat部署Web应用方法

  • Tomcat自动部署
    将YourProject目录拷贝到$CATALINA_HOME/webapps下,然后启动服务器就可以了,Tomcat启动时将自动加载应用。访问地址如下:http://localhost:8080/YourProject/
  • 修改Server.xml文件部署
    $CATALINA_HOME/conf/[enginename]/[hostname]文件夹下添加配置文件(如$CATALINA_HOME/conf/catalina/localhost),xml文件以项目名命名。一个名为manager(安装时自带的示例,目录在${catalina.home}/webapps下)的web应用可以通过这种方式配置。
<Context privileged="true" antiResourceLocking="false"
         docBase="${catalina.home}/webapps/manager">
  <Valve className="org.apache.catalina.valves.RemoteAddrValve"
         allow="127\.0\.0\.1" />
</Context>
  • 像IntelliJ IDEA这样的IDE支持在Tomcat上部署,操作很方便。还有种方式是使用maven的Tomcat插件。在pom.xml文件中配置:
<!-- 本地环境使用 -->
<plugin>   
  <groupId>org.apache.tomcat.maven</groupId>   
  <artifactId>tomcat7-maven-plugin</artifactId>   
  <version>2.1</version>   
  <configuration>      
    <hostName>localhost</hostName>    <!--   Default: localhost -->  
    <port>8080</port>    <!-- 启动端口 Default:8080 --> 
    <path>/api</path>    <!-- 访问应用路径  Default: /${project.artifactId}-->  
    <uriEncoding>UTF-8</uriEncoding>      <!-- uri编码 Default: ISO-8859-1 -->
  </configuration>
</plugin>

在命令行中使用tomcat7:run命令运行当前项目,使用tomcat7:deploy部署当前项目。

web应用

一个web应用由多个静态web资源和动态web资源组成,组成web应用的这些文件会由一个目录组织起来,这个目录称为web应用所在目录。Tomcat等应用服务器把主机上的资源映射到服务器对外提供的访问路径上。
web应用的组成结构:

main---------------------------Web应用所在目录
           |----html、jsp、css、js等文件,根目录下的文件外界可以直接访问
           |----WEB-INF目录
                    |---------classes目录(java类)
                    |---------lib目录(java类运行所需的jar包)
                    |---------web.xml(web应用的配置文件)   

WEB-INF 这个目录下的文件外界无法直接访问,由web服务器负责调用。

Tomcat 的总体结构

参考的文章介绍的是Tomcat 5,可能不适合Tomcat 9


Tomcat 的总体结构

Tomcat 的心脏是两个组件:Connector 和 Container。Connector 主要负责对外交流,Container 主要处理 Connector 接受的请求,处理内部事务。而Service 只是在 Connector 和 Container 外面多包一层,把它们组装在一起,向外面提供服务,一个 Service 可以设置多个 Connector,但是只能有一个 Container 容器。

Tomcat 中组件的生命周期是通过 Lifecycle 接口来控制的,组件只要继承这个接口并实现其中的方法就可以统一被拥有它的组件控制了。最高的组件是 Server,可以控制 Tomcat 中所有组件的生命周期。控制生命周期的 Start 和 Stop 方法,还有一个监听机制。

参考:
Apache Tomcat 9 Docs
Tomcat 系统架构与设计模式
Tomcat 容器模型

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 222,104评论 6 515
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 94,816评论 3 399
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 168,697评论 0 360
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 59,836评论 1 298
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 68,851评论 6 397
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 52,441评论 1 310
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,992评论 3 421
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,899评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 46,457评论 1 318
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 38,529评论 3 341
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 40,664评论 1 352
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 36,346评论 5 350
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 42,025评论 3 334
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 32,511评论 0 24
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,611评论 1 272
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 49,081评论 3 377
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 45,675评论 2 359

推荐阅读更多精彩内容