首页 > 代码库 > javaEE Tomcat目录结构

javaEE Tomcat目录结构

 1. 一级目录
        bin ——Tomcat执行脚本目录
        conf ——Tomcat配置文件
        lib ——Tomcat运行需要的库文件(JARS)
        logs ——Tomcat执行时的LOG文件
        temp ——Tomcat临时文件存放目录
        webapps ——Tomcat的主要Web发布目录(存放我们自己的JSP,SERVLET,类)
        work ——Tomcat的工作目录,Tomcat将翻译JSP文件到的Java文件和class文件放在这里。
2. 二级目录(仅列出一级目录下几个重要的文件)
      (1) bin目录下的文件
        catalina.sh 用于启动和关闭tomcat服务器
        configtest.sh 用于检查配置文件
        startup.sh 启动Tomcat脚本
        shutdown.sh 关闭Tomcat脚本
       (2) conf目录下的文件
        server.xml Tomcat 的全局配置文件
        web.xml 为不同的Tomcat配置的web应用设置缺省值的文件
        tomcat-users.xml Tomcat用户认证的配置文件
       (3) lib目录下的文件
        包含被Tomcat使用的各种各样的jar文件。
       (4) logs目录下的文件
        localhost_access_log.2013-09-18.txt 访问日志
        localhost.2013-09-18.log 错误和其它日志
        manager.2013-09-18.log 管理日志
        catalina.2013-09-18.log Tomcat启动或关闭日志文件
       (5) webapps目录下的文件
        含Web应用的程序(JSP、Servlet和JavaBean等)
       (6) work目录下的文件
        由Tomcat自动生成,这是Tomcat放置它运行期间的中间(intermediate)文件(诸如编译的JSP文件)地方。 如果当Tomcat运行时,你删除了这个目录那么将不能够执行包含JSP的页面。
3. 三级目录(只针对二级目录webapps下的目录或文件)
       二级目录webapps,主要存放Web应用程序。Tomcat的Web应用程序应该由如下目录组成:
       (1).页面内容等文件的存放位置:*.html, *.jsp等可以有许多目录层次,由用户的网站结构而定,实现的功能应该是网站的界面,也就是用户主要的可见部分。除了HTML文件、JSP文件外,还有js(JavaScript)文件和css(样式表)文件以及其他多媒体文件等。
       (2).Web-INF/web.xml 这是一个Web应用程序的描述文件。这个文件是一个XML文件,描述了Servlet和这个Web应用程序的其他组件信息,此外还包括一些初始化信息和安全约束等等。
       (3).Web-INF/classes/ 这个目录及其下的子目录应该包括这个Web应用程序的所有JavaBean及Servlet等编译好的Java类文件(*.class)文件,以及没有被压缩打入JAR包的其他class文件和相关资源。注意,在这个目录下的Java类应该按照其所属的包层次组织目录(即如果该*.class文件具有包的定义,则该*.class文件应该放在.\WEB-INF\classes\包名下)。
       (4).通常Web-INF/classes/ 这个目录下的类文件也可以打包成JAR文件,并可以放到WEB-INF下的lib目录下。如将 classes目录下的各个*.class文件打包成WebMis.jar文件(jar cvf WebMis.jar *.*)
       说明:
        ? WEB-INF目录中包含应用软件所使用的资源,但是WEB-INF却不在公共文档根目录之中。在这个目录中所包含的文件都不能被客户机所访问。
        ? 类目录中(在WEB-INF下)包含运行Web应用程序时所需的Servlets,Beans等类。
        ? lib目录(在WEB-INF下)包含有Java archive files (JARs),例如标签库或者Servlets,Beans等类的*.jar文件。
        ? 如果一个类出现在JAR文件中同时也出现在类的目录中,类加载器会加载位于类目录中的那一个。
        (5). common/lib/ 这个目录下包含了所有压缩到JAR文件中的类文件和相关文件。比如:第三方提供的Java库文件、JDBC驱动程序等。
        ? 其中msbase.jar、mssqlserver.jar、msutil.jar文件为SqlServer2000的JDBC驱动程序
        ? 其中servlet-api.jar和jsp-api.jar为Servlet和JSP的API所在的包
Tomcat配置文件
        Tomcat的配置文件默认存放在$CATALINA_HOME/conf目录中,主要有以下几个:
        ? server.xml: Tomcat的主配置文件,包含Service, Connector, Engine, Realm, Valve, Hosts主组件的相关配置信息;
        ? web.xml:遵循Servlet规范标准的配置文件,用于配置servlet,并为所有的Web应用程序提供包括MIME映射等默认配置信息;
        ? tomcat-user.xml:Realm认证时用到的相关角色、用户和密码等信息;Tomcat自带的manager默认情况下会用到此文件;在Tomcat中添加/删除用户,为用户指定角色等将通过编辑此文件实现;
        ? catalina.policy:Java相关的安全策略配置文件,在系统资源级别上提供访问控制的能力;
        ? catalina.properties:Tomcat内部package的定义及访问相关的控制,也包括对通过类装载器装载的内容的控制;Tomcat在启动时会事先读取此文件的相关设置;
        ? logging.properties: Tomcat通过自己内部实现的JAVA日志记录器来记录操作相关的日志,此文件即为日志记录器相关的配置信息,可以用来定义日志记录的组件级别以及日志文件的存在位置等;
        ? context.xml:所有host的默认配置信息;
        下面对几个常用的配置文件进行详解。
        1. server.xml

        Tomcat以面向对象的方式运行,它可以在运行时动态加载配置文件中定义的对象结构,这有点类似于apache的httpd模块的调用方式。server.xml中定义的每个主元素都会被创建为对象,并以某特定的层次结构将这些对象组织在一起。下面是一个简图说明了各组件之间的关系。


server.xml文件中可定义的元素非常多,包括Server, Service, Connector, Engine, Cluster, Host, Alias, Context, Realm, Valve, Manager, Listener, Resources, Resource, ResourceEnvRef, ResourceLink, WatchedResource, GlobalNameingResources, Store, Transaction, Channel, Membership, Transport, Member, ClusterListener等。
        下面简单介绍几个常用组件:
       (1) .Connector组件
        Tomcat应该考虑工作情形并为相应情形下的请求分别定义好需要的连接器才能正确接收来自于客户端的请求。一个引擎可以有一个或多个连接器,以适应多种请求方式。
        定义连接器可以使用多种属性,有些属性也只适用于某特定的连接器类型。一般说来,常见于server.xml中的连接器类型通常有4种:
            ? HTTP连接器
            ? SSL连接器
            ? AJP 1.3连接器
            ? proxy连接器
        如server.xml中定义的HTTP连接器:

<Connector port="8080" protocol="HTTP/1.1"   
       connectionTimeout="20000"   
       redirectPort="8443" URIEncoding="UTF-8" />  
(2) .Context组件
         Context在某些意义上类似于apache中的路径别名,一个Context定义用于标识tomcat实例中的一个Web应用程序;如下面的定义:

<!-- Tomcat Root Context -->  
<Context path="" docBase="/web/webapps"/>  
<!-- buzzin webapp -->  
<Context path="/bbs"  
docBase="/web/threads/bbs"  
reloadable="true">  
</Context>  
<!-- chat server -->  
<Context path="/chat" docBase="/web/chat"/>  
<!-- darian web -->  
<Context path="/darian" docBase="darian"/>  
在Tomcat中,每一个context定义也可以使用一个单独的XML文件进行,其文件的目录为$CATALINA_HOME/conf/<engine name>/<host name>。可以用于Context中的XML元素有Loader,Manager,Realm,Resources和WatchedResource。
        常用的属性定义有:
        ? docBase:相应的Web应用程序的存放位置;也可以使用相对路径,起始路径为此Context所属Host中appBase定义的路径;切记,docBase的路径名不能与相应的Host中appBase中定义的路径名有包含关系,比如,如果appBase为deploy,而docBase绝不能为deploy-bbs类的名字;
        ? path:相对于Web服务器根路径而言的URI;如果为空“”,则表示为此webapp的根路径;如果context定义在一个单独的xml文件中,此属性不需要定义;
        ? reloadable:是否允许重新加载此context相关的Web应用程序的类;默认为false;
        2. web.xml
        web.xml基于Java Servlet规范,可被用于每一个Java servlet容器,通常有两个存放位置,$CATALINA_BASE/conf和每个Web应用程序(通常是WEB-INF/web.xml)。Tomcat在deploy一个应用程序时(包括重启或重新载入),它首先读取conf/web.xml,而后读取WEB-INF/web.xml。