6June.2008©NeusoftConfidentialTomcat服务器6June.2008Confidential学习内容:•1.什么是Tomcat•2.Tomcat服务器结构•3.Tomcat安装步骤•4.JavaWeb应用的结构和发布6June.2008Confidential什么是Tomcat?•JakartaTomcat服务器是在sun公司的JSWDK(JavaServerWebDevelopmentKit,sun公司推出的小型Servlet/Jsp调试工具)的基础上发展起来的一个优秀的JavaWeb应用容器。•它是Apache-Jakarta的一个子项目。同时它又是SUN公司官方推荐的Servlet/JSP容器。•Servlet和JSP的昀新规范都在Tomcat的新版本中得到了实现。•它是一个开放源码的软件,得到了开放源码志愿者的广泛支持,它可以和目前大部分的主流HTTP服务器(如IIS和Apache服务器)一起工作,而且运行稳定、可靠、效率高。6June.2008ConfidentialTomcat与Servlet容器•Servlet是一种运行在支持Java语言的服务器上的组件。Servlet昀常见的用途是扩展JavaWeb服务器功能,提供非常安全的、可移植的、易于使用的CGI替代品。•它是一种动态加载的模块,为来自Web客户的请求提供服务。它完全运行在Java虚拟机上。由于它在服务器端运行,因此它的运行不依赖于浏览器。•Tomcat作为Servlet容器,负责处理客户请求,把请求送给Servlet并把结果返回给客户。6June.2008Confidential•Servlet容器调用Servlet处理请求/响应过程:–当客户请求访问某个Servlet时,Servlet容器将创建一个ServletRequest对象和ServletResponse对象。–在ServletRequest对象中封装了客户请求信息,然后Servlet容器把ServletRequest对象和ServletResponse对象传给客户所请求的Servlet。–Servlet把响应结果写到ServletResponse中,然后由Servlet容器把响应结果传给客户。客户Servlet容器请求数据ServletRequest对象Servlet响应数据ServletResponse对象6June.2008ConfidentialTomcat服务器的结构•Tomcat服务器是由一系列可配置的组件构成,其中核心组件是Servlet容器,它是所有其他Tomcat组件的顶层容器。•Tomcat的组件可以在TOMCAT_HOME/conf/server.xml文件中进行配置,每个Tomcat组件在Server.xml文件中对应一种配置元素。•以下代码以XML的形式展示了各种Tomcat组件之间的关系:6June.2008ConfidentialzServerServiceConnector/EngineHostContext/Context/Host/Engine/Service/Serverserver.xml文件结构6June.2008ConfidentialTomcat服务器Server.xml配置文件中元素可以分为四类:•1.顶层类元素–顶层类元素包括Server元素和Service元素,它们位于整个配置文件的顶层。•2.连接器类元素–连接器类元素Connector元素代表了介于客户服务之间的通信接口,负责将客户的请求发送给服务器,并将服务器的响应结果传递给客户。6June.2008Confidentialz3.容器类元素−容器类元素代表处理客户请求并生成响应结果的组件,有3种容器类元素,它们是:Engine、Host和Context。−Engine组件:为特定的Service组件处理所有客户请求;−Host组件:为特定的虚拟主机处理所有客户请求的;−Context组件:为特定的Web应用处理所有客户请求。z4.嵌套类元素−嵌套类元素代表了可以加入到容器中的组件,如Logger元素、Valve元素和Realm元素(后续)6June.2008Confidential•元素解释(1):–Server元素•Server元素代表整个Servlet容器,它是Tomcat实例的顶层元素。Server元素中可包含一个或多个Service元素。–Service元素•Service元素中包含一个Engine元素,以及一个或多个Connector元素,这些Connector元素共享同一个Engine元素。–Connector元素•Connector元素代表和客户程序实际交互的组件,它负责接收客户请求,以及向客户返回响应结果。6June.2008Confidential元素解释(2):•Engine元素–每个Service元素只包含一个Engine元素。Engine元素处理在同一个Service中所有Connector元素接收到的客户请求。•Host元素–一个Engine元素中可以包含多个Host元素。每个Host元素定义了一个虚拟主机,它可以包含一个或多个Web应用。•Context元素–Context元素是使用昀频繁的元素。每个Context元素代表了运行在虚拟主机上单个Web应用。一个Host元素中可以包含多个Context元素。6June.2008ConfidentialConnector1Connector2Connector3myvirtualhostContext1Context2HTTP客户HTTPS客户Tomcat各个组件之间的嵌套关系如图:ServerService1Service2EngineHostConnector负责接收客户的请求并向客户返回响应结果,在同一个Service中,多个Connector共享同一个Engine。同一个Engine中可以有多个Host,同一个Host中包含多个Context。6June.2008ConfidentialJavaWeb应用简介•Tomcat服务器昀主要的功能就是充当JavaWeb应用的容器。•在SUN的JavaServlet规范中,对JavaWeb应用做了这样的定义:“JavaWeb应用由一组Servlet、HTML页、类,以及其他可以被绑定资源构成。•它可以在各种供应商提供的实现Servlet规范的Web应用容器中运行。”6June.2008Confidential在JavaWeb应用中可以包含如下内容:–Servlet–Jsp–实用类–静态文档,如HTML、图片等–客户端类–描述Web应用的信息(web.xml)6June.2008ConfidentialJavaWeb应用的主要特征之一就是它与Context的关系:–每个Web应用有惟一的Context。–当JavaWeb应用运行时,Servlet容器为每个Web应用创建惟一的ServletContext对象,它被同一个Web应用中所有的组件共享。6June.2008Confidential假如有两个Web应用分别为helloapp和bookstore,两个客户分别访问如下URL:•客户1访问的URL为:–•客户2访问的URL为:–•Tomcat服务器的各个组件响应客户请求过程如图。每个Context容器只对应一个JavaWeb应用。6June.2008Confidential客户1客户2Connector端口:8080EngineHostIndex.htmBookstore.jspServiceServer6June.2008Confidential创建和发布Web应用•1.Tomcat的目录结构•2.创建和发布Web应用zWeb应用的目录结构zweb.xmlz在server.xml中加入Context元素z部署HTML文件z部署Jsp文件z部署Servlet文件z创建并发布WAR文件6June.2008ConfidentialTomcat的目录结构•在Tomcat上发布Web应用之前,首先要了解Tomcat的目录结构。这些目录都是TOMCAT_HOME的子目录:–/bin存放在Linux及Windows平台上启动和关闭Tomcat的脚本文件。–/conf存放Tomcat服务器的各种配置文件。如:server.xml–/server包含3个子目录:classes、lib和webapps•/server/lib存放Tomcat服务器所需的各种JAR文件(只可以被Tomcat服务器访问)•/server/webapps存放Tomcat自带的两个Web应用:admin和manager应用6June.2008Confidentialz/common/lib存放Tomcat服务器以及所有Web应用都可以访问的JAR文件z/shared/lib存放所有Web应用都可以访问的JAR文件(但不能被Tomcat服务器访问)z/logs存放Tomcat的日志文件。z/webapps当发布Web应用时,默认情况下把Web应用文件放于此目录下z/workTomcat把由JSP生成的Servlet放于此目录下6June.2008Confidential创建和发布Web应用的HelloWorld!•JavaWeb应用由一组静态HTML页、Servlet、JSP和其他的class组成。每种组件在Web应用中都有固定的存放目录。•Web应用示例:javaweb1-tomcat:–Servlet组件:HelloTomcat.java6June.2008Confidential•步骤一:创建Web应用的目录结构•TOMCAT_HOME/webapps目下创建如下结构:–/javaweb1-tomcat:•Web应用的根目录,所有的Jsp和HTML文件都存放于此目录下–/javaweb1-tomcat/WEB-INF(目录名称大写):•存放Web应用的发布描述文件web.xml–/javaweb1-tomcat/WEB-INF/classes:•存放各种class文件,Servlet类文件也放于此目录下–/javaweb1-tomcat/WEB-INF/lib:•存放Web应用所需的各种JAR文件。例如,在这个目录下,可以存放JDBC驱动程序的JAR文件。6June.2008ConfidentialCATALINA_HOME/WEBAPPS目录javaweb1-tomcat目录*.html*.jspWEB-INF目录web.xmlclasses目录danny目录HelloTomcat.class6June.2008Confidential步骤二:创建web.xml文件•JavaWeb应用通过一个基于XML的发布描述符文件来配置其发布信息,这个文件名为web.xml它存放于WEB-INF子目录下。在web.xml文件中可包含如下配置信息:–Servlet的定义–Servlet的初始化参数–Servlet以及JSP的映射–安全域参数–Welcome文件清单–资源引用–环境变量的定义6June.2008Confidential•web.xml文件内容:?xmlversion=1.0encoding=ISO-8859-1?!DOCTYPEweb-appPUBLIC'-//SunMicrosystems,Inc.//DTDWebApplication2.3//EN''