1、学习tomcat必须的知识第1章 Tomcat的安装与配置 Tomcat可以运行Servlet和JSP,是一个小型的轻量级应用服务器,它性能稳定、扩展性好、源码开放,是开发中小型Web应用系统的首选。本章首先介绍Tomcat服务器特点、层次结构、应用处理流程及发展史,然后讲述Tomcat的安装、设置和测试,接着介绍Tomcat目录结构、常用配置平台、控制和管理程序等,最后设计一个不需数据库支持的简单聊天室。1.1 Tomcat简介Tomcat是Sun的JSWDK(Java Server Web Development Kit)中的Servlet容器,属于Apache软件基金会(Apache S
2、oftware Foundation)的Jakarta项目中的一个核心项目,由Apache、Sun和其他一些公司和个人共同开发而成。Tomcat既是一个开放源码、免费支持JSP和Servlet技术的容器,同时又是一个Web服务器软件,受到了Sun公司的大力推荐和支持。因此,Servlet和JSP的最新规范都可以在Tomcat的新版本中得到实现。与传统桌面应用程序不同,Tomcat中的应用程序是一个WAR(Web Archive)文件,它是许多文件构成的一个压缩包,包中的文件按照一定目录结构来组织,不同目录中的文件也具有不同的功能。部署应用程序时,只需要把WAR文件放到Tomcat的webapp
3、目录下,Tomcat会自动检测和解压该文件。JSP文件第一次执行时,要先由Tomcat将其转化为Servlet文件,然后编译,所以速度会慢一些,但后继执行时速度会很快。Tomcat既是一个Servlet容器,又是一个独立运行的服务器,像IIS、Apache等Web服务器一样,具有处理HTML页面的功能。但它处理静态HTML文件的能力并不是太强,所以一般都是把它当作JSP/Servlet引擎,通过适配器(Adapter)与其他Web服务器软件(如Apache)配合使用。此外,Tomcat还可与其他一些软件集成起来实现更多功能,例如,与JBoss集成起来开发EJB、与OpenJMS集成起来开发JM
4、S应用、与Cocoon(Apache的另外一个项目)集成起来开发基于XML的应用等。Tomcat是一个小型的轻量级应用服务器,运行时占用系统资源小、扩展性好、支持负载平衡与邮件服务等开发应用系统中的常用功能,并且不断改进和完善。Tomcat适用于中小型系统和并发访问用户不太多的场合,是开发和调试JSP程序的首选。先进的技术、稳定的性能、源码开放和免费获取的机制,使得Tomcat深受Java爱好者的喜爱并得到了许多软件开发商的认可,成为目前相当流行的Web应用服务器。1.1.1 Servlet简述谈起Tomcat,就不能不说Servlet,如果没有Servlet的应用需求,就没有Tomcat的产
5、生。Servlet(小服务程序)是一个与协议无关的、跨平台的Web组件,它基于Java技术开发,由Servlet容器所管理。和运行在客户端浏览器中的Applet(小应用程序)相似,Servlet运行在服务器端,可以动态地扩展服务器的功能,并采用“请求响应”模式提供Web服务。Servlet的主要功能是交互式地浏览和修改数据,生成动态Web内容。Servlet是平台独立的Java类,即按照Servlet规范编写的Java类,所以具有Java语言的所有优点,如良好的可移植性及安全性等。Servlet被编译为平台中立的字节码,可以被动态地加载到支持Java技术的Web服务器中运行,就如同Applet
6、对客户端一样,区别在于Servlet运行并不需要图形用户界面。Java Servlet具有如下优点:(1)Servlet可以和其他资源(数据库、文件、Applet和Java应用程序等)交互,把生成的响应内容返回给客户端。如果需要,还可以保存“请求响应”过程中的信息。(2)服务器采用Servlet可以完全授权对本地资源的访问,Servlet自身也会控制外部 用户的访问数量及访问性质。(3)Servlet可以从本地硬盘,或者通过网络从远端硬盘来激活。(4)通过Servlet Tag技术,可以在HTML页面中动态调用Servlet。(5)Servlet可以是其他服务的客户端程序。(6)通过链接技术,
7、一个Servlet可以调用另一个或一系列Servlet来成为它的客户端。(7)Servlet API与协议无关。1.1.2 Tomcat与Servlet之间的关系当初在Apache开发时还未出现Servlet的概念,所以Apache不能内置支持Servlet。实际上,除了Apache,其他许多Web服务器软件都不能直接支持Servlet。为了支持Servlet,通常要单独开发程序,这种程序一般称为服务器小程序容器(Servlet Container),有时也叫做服务器小程序引擎(Servlet Engine)。它是Web服务器或应用程序服务器的一部分,用于在发送的请求和响应之上提供网络服务,解
8、码基于MIME的请求,格式化基于MIME的响应,它在Servlet的生命周期内包容和管理Servlet,是一个实时运行的外壳程序。运行时由Web服务器软件处理一般请求,并把Servlet调用传递给“容器”来处理。Tomcat就是满足这种需要的JSP/Servlet引擎,是Sun公司的JSP/Servlet的官方实现。按照工作模式的不同,Servlet容器可以分为以下3类:1独立运行的Servlet容器在这种模式下,Servlet容器作为构成Web服务器的一部分而存在。当使用基于Java的Web服务器时,就属于这种情况。这种方式是Tomcat的默认模式,然而大多数Web服务器并不是基于Java的
9、,所以就产生了下面的两种其他类型。2内置的Servlet容器Servlet容器由Web服务器插件和Java容器两部分组成。采用这种方式时,Web服务器插件需要在某个Web服务器内部地址空间中打开一个JVM(Java虚拟机),在此JVM上加载Java容器并运行Servlet。如果客户端调用Servlet,Web服务器插件首先获得此请求的控制并将它传递(使用JNI技术)给Java容器,然后Java容器把此请求交给Servlet来处理。这种方式运行速度较快,并且能够提供良好的性能,适用于单进程、多线程服务器,但是在伸缩性方面存在不足。3外置的Servlet容器采用这种方式时,Servlet容器运行在
10、Web服务器外部地址空间。先由Web服务器插件在某个Web服务器外部地址空间打开一个JVM(Java虚拟机),然后加载Java容器来运行Servlet。Web服务器插件和JVM之间使用IPC(进程间通信)机制(通常是TCP/IPSockets)。如果客户端调用Servlet,Web服务器插件首先获得此请求的控制并将它传递(使用IPCs技术)给Java容器,然后Java容器把此请求交给Servlet来处理。这种方式对客户端请求的处理速度不如内置Servlet那样快,但是在其他方面(如可伸缩性、稳定性等)具有优势。Tomcat属于Servlet容器,其工作模式也分为上述3种,所以Tomcat既可被
11、用作独立运行的Servlet引擎(便于开发和调试),又可作为一个需要增强功能的Web服务器(如当前的Apache、IIS和Netscape服务器)插件。在配置Tomcat之前,就需要确定采用哪种工作模式,工作模式(1)比较简单,直接安装Tomcat即可,工作模式(2)和(3)有些复杂,除了安装Tomcat、Web服务器之外,还需要安装连接两者的中间连接件。【专家提示】在本书中,如果没有特殊说明,Tomcat运行都采用独立运行的Servlet容器 方式。Java Servlet API是Servlet容器和Servlet之间的接口,它定义了Servlet的各种方法,还定义了Servlet容器传送
12、给Servlet的对象类,其中最重要的是请求对象ServletRequest和响应对象ServletResponse。这两个对象都是由Servlet容器在客户端调用Servlet时产生的,Servlet容器把客户请求信息封装在ServletRequest对象中,然后把这两个对象都传送给要调用的Servlet,Servlet处理完后把响应结果写入ServletResponse,然后由Servlet容器把响应结果发送到客户端。Tomcat服务器接收客户端请求并作出响应的完整过程如图1-1所示。图1-1 Tomcat服务器响应客户请求过程其中,处表示Web服务器接收到客户端发出的HTTP请求后,转发
13、给Servlet容器,同时把控制返回Servlet容器;处表示Servlet容器把响应对象ServletResponse中的处理结果转发给Web服务器,通知Web服务器以HTTP响应的方式把结果发送到客户端,同时把控制返回Web服务器。1.1.3 Tomcat层次结构Tomcat服务器由一系列可配置组件构成,其中核心组件是Catalina Servlet容器,它是其他所有Tomcat组件的顶层容器。Tomcat各组件之间存在的层次关系如图1-2所示。图1-2 Tomcat层次关系【专家提示】Tomcat的组件可以在confserver.xml文件中进行配置,每个Tomcat组件在server.
14、xml文件中对应一种配置元素。在XML文件的代码中,这些组件之间关系如下所示: 上述各组件将Tomcat分成若干层(Server层、Service层、Engine层、Host层、Context层),各层通过数据管道PipeLine交互,如图1-3所示。上述各层对应组件及其在Tomcat服务器中的作用如下:(1)Server层对应Server组件,逻辑上表示整个Tomcat,即整个Catalina Servlet容器。它处于Tomcat顶层,可以包含一个或多个Service层。Tomcat提供了该层接口的一个默认实现,所以通常不需要用户自己去实现。图1-3 Tomcat的层次结构(2)Servi
15、ce层对应Service组件,是包含在Server层中的一个逻辑功能层。它包含一个Engine层,以及一个或多个连接器(Connector)。Service组件将一个或多个Connector组件绑定到Engine层上,Connector组件侦听端口,获得用户请求,并将请求交给Engine层处理,同时把处理结果发给用户,从而实现一个特定的实际功能。Tomcat提供了Service接口的默认实现,所以通常也不需要用户定制。(3)Engine层对应Engine组件,该层是请求分发处理层,可以连接多个Connector。它从Connector接收请求后,解析出可以完成用户请求的URL,根据该URL可以
16、把请求匹配到正确的Host上,当Host处理完用户请求后,Engine层把结果返回给适合的连接器,再由连接器传输给用户。该层的接口一般不需要用户来定制,特殊情况下,用户可以通过实现该接口来提供自定义的引擎。(4)Host层对应Host组件,该层表示一个虚拟主机,一个Engine层可以包含多个Host层,每个Host层可以包含一个或多个Context层,对应不同的Web应用。因为Tomcat给出的Host接口的实现(类StandardHost)提供了重要的附加功能,所以用户通常不需要定制Host。(5)Context层对应Context组件,该层代表某个虚拟主机上的实际目录或一个WAR,即单个W
17、eb应用程序,它运行在特定的虚拟主机中,使用最为频繁。一个Host层包含多个Context层,每一个Context都有唯一的路径,Host层接到请求后,根据用户请求的URL,将请求定位到Context层。1.1.4 Java Web应用处理充当Java Web的容器是Tomcat服务器最主要的功能。Java Web在Sun的Java Servlet规范中定义如下:Java Web应用由一组Servlet、HTML页、类,以及其他可以被绑定的资源构成。它可以在各种供应商提供的实现Servlet规范的Web应用容器中运行。由此定义可知,在JavaWeb应用中可以包含Servlet、JSP、类、静态
18、文档和配置信息等。每个Web应用都对应唯一的Context,Servlet容器为每个运行的Java Web应用创建唯一的ServletContext对象,该对象被同一个Web应用中的所有组件所共享。假设有3个Web应用,分别为HelloWorld、Counter和TableList,它们对应的主页URL分别如下:HelloWorld:http:/localhost1:8080/HelloWorld/index.htmlCounter:http:/localhost1:80/Counter/index.jspTableList:http:/localhost2:8086/TableList/in
19、dex.jsp3个用户分别访问上述3个地址,则Tomcat服务器各个组件响应用户请求的过程如 图1-4所示,其中每个Context容器对应唯一的Java Web应用。图1-4 Tomcat服务器各组件响应用户请求过程1.1.5 Tomcat发展随着Sun公司发布的Servlet/JSP规范不断完善和升级,Tomcat的版本也逐步更新。Tomcat版本和Servlet/JSP规范之间的对应关系如表1-1所示。表1-1 Tomcat版本和Servlet/JSP规范Tomcat版本Servlet/JSP规范6.0.142.5/2.15.5.x2.4/2.04.1.272.3/1/2其中,Tomcat
20、目前的最新版本是Tomcat 6.0.14,它支持最新的J2SE标准、执行效率高、使用方便、发展前景良好,所以本书围绕Tomcat 6.0.14展开讲述。1.2 Tomcat的安装本节将介绍Tomcat工作环境的安装、基本的启动与停止方法、JDK的安装与JVM性能调整、二进制版本的Tomcat安装以及从源代码安装Tomcat,最后讲解如何启动、停止和自动启动Tomcat,并进行安装的测试。1.2.1 安装准备在安装Tomcat之前必须先安装JDK。JDK的全称是Java Development Kit,是Sun公司免费提供的Java语言的软件开发工具包,其中包含Java虚拟机(JVM)。编写好
21、的Java源程序经过编译可形成Java字节码,只要安装了JDK,就可以利用JVM解释这些字节码文件,从而保证了Java的跨平台性。在平台兼容性方面,JDK作为解释字节码文件并据此调用操作系统API实现对应功能的Java虚拟机,与操作系统类型和平台位数密切相关,因此存在不同类型的版本,而Tomcat也具有上述特征,所以需要预先下载JDK和Tomcat,这两个软件的版本和下载地址如下:JDK选择Sun官方网站提供的JDK-6U1,下载网址为 EComActionServlet;jsessionid=6C6B460AC2EF83F7FF253E51D5B5BA1C。用户访问上述网址需要注册,注册后就
22、可以根据自己的计算机平台配置选择合适版本。如果使用32位Windows系统,那么选择下载:Windows Offline Installation (build 06),Multi-languagejdk-6u2-windows-i586-p.exe如果使用32位Linux系统,那么选择下载:Linux RPM in self-extracting file (build 05)jdk-6u2-linux-i586-rpm.bin如果使用64位Windows系统,那么选择下载:Windows x64 executable (build 05)jdk-6u2-windows-amd64.exe如
23、果使用64位Linux系统,那么选择下载:Linux x64 RPM in self-extracting file (build 05)jdk-6u2-linux-amd64-rpm.binTomcat选择apache - tomcat 6.0.14,下载网址为http:/tomcat.apache.org/download-60.cgi。在如图1-5所示的下载页面中,Binary Distributions(二进制发行版)下方有若干组下载项,每组下载项有两个不同的版本对应不同的操作系统,其中zip是Windows平台下运行版本,tar.gz是Linux平台下运行版本。其中Core组和Adm
24、inistration Web Application组必须下载,这两组分别对应Tomcat核心安装包和控制平台包,其他组内容可以根据需要来决定是否下载。图1-5 Tomcat下载页面本书内容都基于32位Windows系统,所以JDK选择jdk-6u1-windows-i586-p.exe,Tomcat选择apache- tomcat 6.0.14.zip和apache- tomcat 6.0.14-admin.zip。对于Windows操作系统,tomcat 6.0.14提供了两种安装文件,一个文件为apache-tomcat 6.0.14.exe,另一个文件为apache-tomcat 6
25、.0.14.zip。apache-tomcat 6.0.14.exe是可运行的安装程序,读者只需要双击这个文件,即可开始安装Tomcat。在安装过程中,安装程序会自动搜寻JDK和JRE的位置,并把Tomcat服务加入到Windows操作系统的服务中,同时在“开始”“程序”菜单中加入Tomcat服务器管理菜单。apache-tomcat 6.0.14.zip是一个压缩包,只需要把它解压到本地硬盘即可,这种方式既适合Windows系统下的安装,也适用于其他操作系统,例如Linux系统,所以下面主要介绍apache-tomcat 6.0.14.zip的安装与Tomcat运行环境的设置。1.2.2 J
26、DK安装及设置(1)双击jdk-6u1-windows-i586-p.exe,弹出如图1-6所示界面。单击“接受”按钮进入下一步。图1-6 执行安装程序(2)选择安装内容及路径,如图1-7所示。其中,中间列表是要安装的可选功能,单击每个可选功能左边的按钮,将弹出下拉菜单,其选项内容包括“此功能将安装在本地硬盘驱动器上”、“此功能及所有子功能将安装在本地硬盘驱动器上”、“现在不安装此功能”和“此功能将不可用”,系统默认均为第一个选项。(3)安装JRE,如图1-8所示。 图1-7 选择安装内容及路径 图1-8 设置JRE安装内容及路径【专家提示】系统默认安装路径是C:ProgramFilesJav
27、ajdk1.6.0_02,若想安装到其他路 径,可单击右边的“更改(A)”按钮,选择其他安装路径。建议将JDK安装在C盘根目录下,即JDK的安装目录是C: jdk1.6.0_02。设置好安装内容及路径后,单击“下一步(N)”按钮,即在选择的安装路径下开始安装所选的内容。JRE是Java Runtime Environment的缩写,是Java运行环境,即Java平台。和第二步界面相似,中间列表是要安装的可选功能,系统默认的都是第一个选项。下面是系统安装路径,默认是C:Program FilesJavajre1.6.0_02,若想安装到其他路径,可单击右边的按钮,选择其他安装路径,JRE按照默认
28、路径安装即可。设置好安装内容及路径后,单击“下一步(N)”按钮,即可在选择的安装路径下安装所选的内容。安装完毕后弹出如图1-9所示界面,提示JDK安装完成。图1-9 安装完成安装完成后可以发现系统存在两套JRE,一套位于jre目录下(即C:jdk1.6.0_02jre),另一套位于C:Program FilesJavajre1.6.0_02目录下,后面这套比前面那套少了Server端的JVM,把前面那套Server端的JVM复制过来后两者效果一样。其实,在上述步骤中的第二步,已经安装了JDK和JRE(第一套),第三步安装的是第二套JRE。安装两套JRE的原因是:JDK是基于DOS界面的Java
29、程序集成开发环境,而JRE是Java程序运行的必备平台,即所谓的JVM。安装两套JRE,就是在机器上安装了两个JVM,它们都可以运行Java程序。Java应用程序可以分为两种,一种是JDK目录中的应用程序,另一种是根据各种应用需要开发的一般Java程序。它们执行时分别使用不同的JRE,可以减少搜索时间,利用JRE并行运行的特点来提高程序执行速度,所以C:jdk1.6.0_02jre下的JRE运行JDK目录中的应用程序,而C:Program FilesJavajre1.6.0_02下的JRE运行一般Java应用程序。安装完成后需要重新启动计算机,然后设置环境变量,步骤如下:(1)右击“我的电脑”
30、,在弹出的快捷菜单中选择“属性”命令,打开“系统属性”对话框,选择“高级”选项卡,单击“环境变量”按钮,打开“环境变量”对话框,如图1-10所示。(2)单击“系统变量”选项区域中的“新建”按钮,打开“新建系统变量”对话框,变量名设置为JAVA_HOME,变量值设置为C:jdk1.6.0_02,如图1-11所示,此变量值为JDK安装目录所在位置。 图1-10 “环境变量”对话框 图1-11 “新建系统变量”对话框(3)再新建一个系统变量,变量名设置为classpath,变量值设置为;C:jdk1.6.0_02lib; C:jdk1.6.0_02libtools.jar,此变量值表示搜索Java类
31、的路径,该路径中包含一些Jar归档文件或者相应的目录,Java程序执行时往往会从classpath中选择并添加自己需要的类路径。设置时需要注意,变量值最前面的“.”表示当前路径,不可以省略,不同值之间用“;”隔开。(4)选中“系统变量”面板中的Path变量,然后单击“编辑”按钮,在弹出的“编辑系统变量”对话框中,在变量值的最后添加;C:jdk1.6.0_02bin,此变量设置一些常用目录,该目录中的文件在任何地方都可以直接访问,从而免去了在不同目录间反复切换的麻烦。【专家提示】为了检验环境变量设置是否成功,可以采用下面的方法:选择“开始”“运行”命令,输入cmd,进入DOS界面,然后在其中运行java和javac这两个命令,如果输出对应的帮助信息,则表明环境变量已经设置成功。1.2.3 Tomcat安装及设置把Tomcat压缩文件apache-tomcat-6.0.14.zip中的内容解压缩到C:apache-tomcat-6.0.14下,然后按照1.2.2节中增加系统变量的方法增加系统变量。变量名:TOMCAT_HOME;变量值:C:apache-tomcat-6.0.1
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1