1、Tomcat

一、简介

Tomcat可以运行Servlet和JSP的一个小型的轻量级应用服务器,运行时占用系统资源小、扩展性好、支持负载平衡与邮件服务等开发应用系统中的常用功能,适用于中小型系统和并发访问用户不太多的场合,是开发和调试JSP程序的首选。Tomcat是Sun的JSWDK(Java Server Web Development Kit)中的Servlet容器,属于Apache软件基金会(Apache Software Foundation)的Jakarta项目中的一个核心项目,由Apache、Sun和其他一些公司和个人共同开发而成。Tomcat既是一个开放源码、免费支持JSP和Servlet技术的容器,同时又是一个Web服务器软件,Servlet和JSP的最新规范都可以在Tomcat的新版本中得到实现
以下是Servlet、JSP、EL、omcat、JDK版本之间的关系

Servlet JSP EL Tomcat Java
4.0 2.4 3.1 9.0.x 8
3.1 2.3 3.0 8.5.x 7
3.1 2.3 3.0 8.0.x 7
3.0 2.2 2.2 7.0.x 6
2.5 2.1 2.1 6.0.x 5
2.4 2.0 N/A 5.5.x 1.4
2.3 1.2 N/A 4.1.x 1.3
2.2 1.1 N/A 3.3.x 1.1

二、Tomcat下载、安装、启动

1、下载

  1. tar.gz(zip)文件是Linux操作系统下的安装版本
  2. exe文件是Windows系统下的安装版本
  3. zip文件是Windows系统下的压缩版本

2、安装

  1. 解压到本地,注意解压缩Tomcat的目录不要含有空格或中文

3、启动

  1. 在Tomcat的目录下,双击bin/startup.bat (如果使用linux 双击bin/startup.sh)。
  2. 在浏览器地址栏输入 http://localhost:8080/ ,如果出现tomcat网站主页,则说明启动成功。

4、常见问题

  1. 窗口一闪然后消失

    记事本打开startup.bat 在文件末尾加入 pause指令,再次运行,读取错误原因,根据原因google解决

  2. 端口占用问题(Tomcat的默认端口号为8080)

    发现端口被占用后,通过cmd命令行,查看占用端口进程,CMD命令:netstat -ano (xp win7 通用),找到8080端口号的进程,记住它的PID(进程标识符),然后在任务管理器中找到该PID,关闭该PID对应的进程。 如果在任务管理器发现该占用8080端口的进程的PID是4,映像名称是System,这个进程无法关闭,如果出现这种情况证明了一个服务占用端口。这时候通过services.msc关闭www服务即可

三、Tomcat目录结构

1、目录结构图

img

2、server.xml详解

1、主要的层次结构

  1. 结构图


    img
  2. 说明
    1、bin

    该目录下存放的是二进制可执行文件会有startup.bat和shutdown.bat文件(其余文件无需理会),startup.bat用来启动Tomcat,但需要先配置JAVA_HOME环境变量才能启动,shutdawn.bat用来停止Tomcat;
    2、conf
    这是一个非常非常重要的目录,这个目录下有四个最为重要的文件:

    • server.xml:

      配置整个服务器信息。例如修改端口号,添加虚拟主机等;以后会详细介绍这个文件;

  3. tomcat-users.xml:

    存储tomcat用户的文件,这里保存的是tomcat的用户名及密码,以及用户的角色信息。可以按着该文件中的注释信息添加tomcat用户,然后就可以在Tomcat主页中进入Tomcat Manager页面了;

  4. web.xml:

    部署描述符文件,这个文件中注册了很多MIME类型,即文档类型。这些MIME类型是客户端与服务器之间说明文档类型的,如用户请求一个html网页,那么服务器还会告诉客户端浏览器响应的文档是text/html类型的,这就是一个MIME类型。客户端浏览器通过这个MIME类型就知道如何处理它了。当然是在浏览器中显示这个html文件了。但如果服务器响应的是一个exe文件,那么浏览器就不可能显示它,而是应该弹出下载窗口才对。MIME就是用来说明文档的内容是什么类型的!

  5. context.xml

    对所有应用的统一配置,通常我们不会去配置它。
    3、lib
    Tomcat的类库,里面是一大堆jar文件。如果需要添加Tomcat依赖的jar文件,可以把它放到这个目录中,当然也可以把应用依赖的jar文件放到这个目录中,这个目录中的jar所有项目都可以共享之,但这样你的应用放到其他Tomcat下时就不能再共享这个目录下的Jar包了,所以建议只把Tomcat需要的Jar包放到这个目录下,各个应用需要的jar各个应用自己管理。
    4、 logs
    这个目录中都是日志文件,记录了Tomcat启动和关闭的信息,如果启动Tomcat时有错误,那么异常也会记录在日志文件中。
    5、temp
    存放Tomcat的临时文件,这个目录下的东西可以在停止Tomcat后删除!
    6、webapps
    存放web项目的目录,其中每个文件夹都是一个项目;如果这个目录下已经存在了目录,那么都是tomcat自带的。项目。其中ROOT是一个特殊的项目,在地址栏中没有给出项目目录时,对应的就是ROOT项目。http://localhost:8080/app,进入示例项目。其中app就是项目名,即文件夹的名字。
    7、work
    运行时生成的文件,最终运行的文件都在这里。通过webapps中的项目生成的!可以把这个目录下的内容删除,再次运行时会生再次生成work目录。当客户端用户访问一个JSP文件时,Tomcat会通过JSP生成Java文件,然后再编译Java文件生成class文件,生成的java和class文件都会存放到这个目录下。

2、Server配置

  1. 概念

    Server元素代表整个Catalina Servlet容器,它是Tomcat实例的顶层元素,由org.apache.catalina.Server接口来定义。元素可包含一个或多个元素,但元素不能作为任何其他元素的子元素。

  2. 格式
  3. 说明

    className 指定实现org.apache.catalina.Server接口的类,默认值是 org.apache.catalina.StandardServer

    port 指定Tomcat服务器监听shutdown命令的端口。终止Tomcat服务器运行时,必须在Tomcat服务器所在的机器上发出shutdown命令。该属性是必须设定的。 shutdown 指定终止Tomcat服务器运行时,发给Tomcat服务器的shutdown监听端口的字符串,该属性是必须设定的。

    debug 日志记录的调试信息记录等级。

3、Service配置

  1. 概念

    对应Service组件,是包含在Server层中的一个逻辑功能层。它包含一个Engine层,以及一个或多个连接器(Connector)。Service组件将一个或多个Connector组件绑定到Engine层上,Connector组件侦听端口,获得用户请求,并将请求交给Engine层处理,同时把处理结果发给用户,从而实现一个特定的实际功能。Tomcat提供了Service接口的默认实现,所以通常也不需要定制,元素是有org.apache.catalina.Service接口定义,它包含一个元素,以及一个或多个元素,这些元素共享同一个元素

  2. 格式

    第一个处理所有直接有Tomcat服务器接收到的Web客户请求, 第二个处理由Apache服务器转发过来的Web客户请求

  3. 说明

    name 定义Service的名字

4、Connector配置

  1. 概念
    Connector元素代表与客户程序交互的组件,负责管理Tomcat的工作线程和读/写连接到不同用户的端口的请求/响应
  2. 格式
     <!--8080默认的端口 -->
     <Connector port="8080" protocol="HTTP/1.1"
      connectionTimeout="20000"
      redirectPort="8443" />
     <!--80新增的80端口 -->
     <Connector port="80" protocol="HTTP/1.1"
      connectionTimeout="20000"
      redirectPort="8443" />
    
  3. 说明

    enableLookups 如果设置为true,表示支持域名解析,可以把IP地址解析为主机名。Web应用中调用request.getRemostHost方法则返回客户端主机名。该属性默认值为true。

    redirectPort 指定转发端口。如果当前端口只支持non-SSL请求,在需要安全通信的场合,将把客户请求转发给基于SSL的redirectPort端口。

    port 设定TCP/IP端口号,默认为8080。

    address 如果服务器有两个以上的IP地址,该属性可以设定端口监听的IP地址,默认情况下,端口会监听服务器上所有的IP地址。

    protocol 设定HTTP协议,默认值为HTTP/1.1。

    maxThreads 设定处理客户请求的线程的最大数目,这个值也决定了服务器可以同时相应客户请求的最大人数目,默认值为20。

    acceptCount 设定在监听端口队列中的最大客户请求数,默认值为10,如果队列已满,客户请求将被拒绝。

    connectionTimeout 定义建立客户连接超时的时间,以毫秒为单位。如果设置为-1,表示不限制建立客户连接的时间。

5、Engine配置

  1. 概念
    该层是请求分发处理层,可以连接多个Connector。它从Connector接收请求后,解析出可以完成用户请求的URL,根据该URL可以把请求匹配到正确的Host上,当Host处理完用户请求后,Engine层把结果返回给适合的连接器,再由连接器传输给用户。该层的接口一般不需要定制,特殊情况下,用户可以通过实现该接口来提供自定义的引擎,
    每个元素只能包含一个元素。元素处理在同一个中所有的元素接收到的客户请求
  2. 说明
    name 定义Engine的名字 defaultHost 指定处理客户请求的默认主机名,在的子元素定义这一主机。

6、Host配置

  1. 概念
    对应Host组件,该层表示一个虚拟主机,一个Engine层可以包含多个Host层,每个Host层可以包含一个或多个Context层,对应不同的Web应用。因为Tomcat给出的Host接口的实现(类StandardHost)提供了重要的附加功能,所以用户通常不需要定制Host。
    元素由org.apache.catalina.Host接口定义。一个元素可以包含多个元素,每个元素定义了一个虚拟主机,它可以包含一个或多个Web应用
  2. 说明

    name 定义虚拟主机的名字

    appBase 指定虚拟主机的目录,可以指定绝对目录,也可以指定相对于的相对目录,如果此项没有设定,默认值为/webapps

    unpackWARs 如果此项设为true,表示将吧Web应用的WAR文件先展开为开放目录结构后再运行。如果设为false,将直接运行WAR文件。

    autoDeploy 如果此项设为true,表示当Tomcat服务器处于运行状态时,能够监测appBase下的文件,如果有新的Web加入进来的话,会自动发布这个Web应用。

    alias 指定虚拟主机的别名,可以指定多个别名。

    deployOnStartUp 如果此项设置为true,表示Tomcat服务器启动时会自动发布webBase目录下的所有Web应用,如果Web应用在server.xml中没有相应的元素,将采用Tomcat默认的Context,

    deployOnStartUp的默认值为true。

7、Context

  1. 概念

    每一个Context都描述了一个Tomcat的Web应用程序的目录

  2. 说明

    path。这是Context在Web服务时的虚拟目录位置和目录名。

    docBase。这是Context的目录。可以是绝对目录也可以是基于ContextManage的根目录的相对目录。

    debug。日志记录的调试信息记录等级。

    reloadable。这是为了方便Servlet的开发人员而设置的,当这个属性开关打开的时候,Tomcat将检查Servlet是否被更新而决定是否自动重新载入它

四、部署应用程序

就是将 Web 应用(第三方的 WAR 文件,或是你自己定制的 Web 应用)安装到 Tomcat 服务器上的整个过程。
在 Tomcat 服务器上,可以通过多种方法部署 Web 应用

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

推荐阅读更多精彩内容