1  Tomcat的安装与配置
Tomcat可以运行ServletJSP,是一个小型的轻量级应用服务器,它性能稳定、扩展性好、源码开放,是开发中小型Web应用系统的首选。本章首先介绍Tomcat服务器特点、层次结构、应用处理流程及发展史,然后讲述Tomcat的安装、设置和测试,接着介绍Tomcat目录结构、常用配置平台、控制和管理程序等,最后设计一个不需数据库支持的简单聊天室。
1.1  Tomcat简介
TomcatSunJSWDKJava Server Web Development Kit)中的Servlet容器,属于Apache软件基金会(Apache Software Foundation)的Jakarta项目中的一个核心项目,由ApacheSun和其他一些公司和个人共同开发而成。Tomcat既是一个开放源码、免费支持JSPServlet技术的容器,同时又是一个Web服务器软件,受到了Sun公司的大力推荐和支持。因此,ServletJSP的最新规范都可以在Tomcat的新版本中得到实现。
与传统桌面应用程序不同,Tomcat中的应用程序是一个WARWeb Archive)文件,它是许多文件构成的一个压缩包,包中的文件按照一定目录结构来组织,不同目录中的文件也具有
不同的功能。部署应用程序时,只需要把WAR文件放到Tomcatwebapp目录下,Tomcat会自动检测和解压该文件。JSP文件第一次执行时,要先由Tomcat将其转化为Servlet文件,然后编译,所以速度会慢一些,但后继执行时速度会很快。
Tomcat既是一个Servlet容器,又是一个独立运行的服务器,像IISApacheWeb服务器一样,具有处理HTML页面的功能。但它处理静态HTML文件的能力并不是太强,所以一般都是把它当作JSP/Servlet引擎,通过适配器(Adapter)与其他Web服务器软件(如Apache)配合使用。此外,Tomcat还可与其他一些软件集成起来实现更多功能,例如,与JBoss集成起来开发EJB、与OpenJMS集成起来开发JMS应用、与CocoonApache的另外一个项目)集成起来开发基于XML的应用等。
Tomcat是一个小型的轻量级应用服务器,运行时占用系统资源小、扩展性好、支持负载平衡与邮件服务等开发应用系统中的常用功能,并且不断改进和完善。Tomcat适用于中小型系统和并发访问用户不太多的场合,是开发和调试JSP程序的首选。先进的技术、稳定的性能、源码开放和免费获取的机制,使得Tomcat深受Java爱好者的喜爱并得到了许多软件开发商的认可,成为目前相当流行的Web应用服务器。
1.1.1  Servlet简述
谈起Tomcat,就不能不说Servlet,如果没有Servlet的应用需求,就没有Tomcat的产生。Servlet(小服务程序)是一个与协议无关的、跨平台的Web组件,它基于Java技术开发,由下载apacheServlet容器所管理。和运行在客户端浏览器中的Applet(小应用程序)相似,Servlet运行在服务器端,可以动态地扩展服务器的功能,并采用“请求响应”模式提供Web服务。Servlet的主要功能是交互式地浏览和修改数据,生成动态Web内容。
Servlet是平台独立的Java类,即按照Servlet规范编写的Java类,所以具有Java语言的所有优点,如良好的可移植性及安全性等。Servlet被编译为平台中立的字节码,可以被动态地加载到支持Java技术的Web服务器中运行,就如同Applet对客户端一样,区别在于Servlet运行并不需要图形用户界面。
Java Servlet具有如下优点:
1Servlet可以和其他资源(数据库、文件、AppletJava应用程序等)交互,把生成的响应内容返回给客户端。如果需要,还可以保存“请求响应”过程中的信息。
2)服务器采用Servlet可以完全授权对本地资源的访问,Servlet自身也会控制外部  用户的访问数量及访问性质。
3Servlet可以从本地硬盘,或者通过网络从远端硬盘来激活。
4)通过Servlet Tag技术,可以在HTML页面中动态调用Servlet
5Servlet可以是其他服务的客户端程序。
6)通过链接技术,一个Servlet可以调用另一个或一系列Servlet来成为它的客户端。
7Servlet API与协议无关。
1.1.2  TomcatServlet之间的关系
当初在Apache开发时还未出现Servlet的概念,所以Apache不能内置支持Servlet。实际上,除了Apache,其他许多Web服务器软件都不能直接支持Servlet。为了支持Servlet,通常要单独开发程序,这种程序一般称为服务器小程序容器(Servlet Container),有时也叫做服务器小程序引擎(Servlet Engine)。它是Web服务器或应用程序服务器的一部分,
用于在发送的请求和响应之上提供网络服务,解码基于MIME的请求,格式化基于MIME的响应,它在Servlet的生命周期内包容和管理Servlet,是一个实时运行的外壳程序。运行时由Web服务器软件处理一般请求,并把Servlet调用传递给“容器”来处理。Tomcat就是满足这种需要的JSP/Servlet引擎,是Sun公司的JSP/Servlet的官方实现。
按照工作模式的不同,Servlet容器可以分为以下3类:
1.独立运行的Servlet容器
在这种模式下,Servlet容器作为构成Web服务器的一部分而存在。当使用基于JavaWeb服务器时,就属于这种情况。这种方式是Tomcat的默认模式,然而大多数Web服务器并不是基于Java的,所以就产生了下面的两种其他类型。
2.内置的Servlet容器
Servlet容器由Web服务器插件和Java容器两部分组成。采用这种方式时,Web服务器插件需要在某个Web服务器内部地址空间中打开一个JVMJava虚拟机),在此JVM上加载Java容器并运行Servlet。如果客户端调用ServletWeb服务器插件首先获得此请求的控制
并将它传递(使用JNI技术)给Java容器,然后Java容器把此请求交给Servlet来处理。这种方式运行速度较快,并且能够提供良好的性能,适用于单进程、多线程服务器,但是在伸缩性方面存在不足。
3.外置的Servlet容器
采用这种方式时,Servlet容器运行在Web服务器外部地址空间。先由Web服务器插件在某个Web服务器外部地址空间打开一个JVMJava虚拟机),然后加载Java容器来运行ServletWeb服务器插件和JVM之间使用IPC(进程间通信)机制(通常是TCP/IPSockets)。如果客户端调用ServletWeb服务器插件首先获得此请求的控制并将它传递(使用IPCs技术)给Java容器,然后Java容器把此请求交给Servlet来处理。这种方式对客户端请求的处理速度不如内置Servlet那样快,但是在其他方面(如可伸缩性、稳定性等)具有优势。
Tomcat属于Servlet容器,其工作模式也分为上述3种,所以Tomcat既可被用作独立运行的Servlet引擎(便于开发和调试),又可作为一个需要增强功能的Web服务器(如当前的ApacheIISNetscape服务器)插件。在配置Tomcat之前,就需要确定采用哪种工作模
式,工作模式(1)比较简单,直接安装Tomcat即可,工作模式(2)和(3)有些复杂,除了安装TomcatWeb服务器之外,还需要安装连接两者的中间连接件。
【专家提示】在本书中,如果没有特殊说明,Tomcat运行都采用独立运行的Servlet容器    方式。
Java Servlet APIServlet容器和Servlet之间的接口,它定义了Servlet的各种方法,还定义了Servlet容器传送给Servlet的对象类,其中最重要的是请求对象ServletRequest和响应对象ServletResponse。这两个对象都是由Servlet容器在客户端调用Servlet时产生的,Servlet容器把客户请求信息封装在ServletRequest对象中,然后把这两个对象都传送给要调用的ServletServlet处理完后把响应结果写入ServletResponse,然后由Servlet容器把响应结果发送到客户端。Tomcat服务器接收客户端请求并作出响应的完整过程如图1-1所示。
1-1  Tomcat服务器响应客户请求过程
其中,①处表示Web服务器接收到客户端发出的HTTP请求后,转发给Servlet容器,同时把控制返回Servlet容器;②处表示Servlet容器把响应对象ServletResponse中的处理结果转发给Web服务器,通知Web服务器以HTTP响应的方式把结果发送到客户端,同时把控制返回Web服务器。
1.1.3  Tomcat层次结构
Tomcat服务器由一系列可配置组件构成,其中核心组件是Catalina Servlet容器,它是其他所有Tomcat组件的顶层容器。Tomcat各组件之间存在的层次关系如图1-2所示。
1-2  Tomcat层次关系
【专家提示】Tomcat的组件可以在<TOMCAT_HOME>\l文件中进行配置,每个Tomcat组件在l文件中对应一种配置元素。
XML文件的代码中,这些组件之间关系如下所示:
<Server>
    <Service>
        <Connector/>
        <Engine>
            <Host>
                <Context>
                </Context>
            </Host>
</Engine>
    </Service>
</Server>
上述各组件将Tomcat分成若干层(Server层、Service层、Engine层、Host层、Context层),各层通过数据管道PipeLine交互,如图1-3所示。
上述各层对应组件及其在Tomcat服务器中的作用如下:
1Server
对应Server组件,逻辑上表示整个Tomcat,即整个Catalina Servlet容器。它处于Tomcat顶层,可以包含一个或多个Service层。Tomcat提供了该层接口的一个默认实现,所以通常不需要用户自己去实现。
1-3  Tomcat的层次结构
2Service
对应Service组件,是包含在Server层中的一个逻辑功能层。它包含一个Engine层,以及一个或多个连接器(Connector)。Service组件将一个或多个Connector组件绑定到Engine层上,Connector组件侦听端口,获得用户请求,并将请求交给Engine层处理,同时把处理结果发给用户,从而实现一个特定的实际功能。Tomcat提供了Service接口的默认实现,所以通常也不需要用户定制。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。