您的位置:首页 > 运维架构 > Tomcat

tomcat目录结构与配置文件,web应用的目录结构

2017-09-18 21:43 288 查看

Tomcat的目录结构

/bin:存放windows或Linux平台上启动和关闭Tomcat的脚本文件
/conf:存放Tomcat服务器的各种全局配置文件,其中最重要的是server.xml和web.xml
/doc:存放Tomcat文档
/server:包含三个子目录:classes、lib和webapps
/server/lib:存放Tomcat服务器所需的各种JAR文件
/server/webapps:存放Tomcat自带的两个WEB应用admin应用和 manager应用
/common/lib:存放Tomcat服务器以及所有web应用都可以访问的jar文件
/shared/lib:存放所有web应用都可以访问的jar文件(但是不能被Tomcat服务器访问)
/logs:存放Tomcat执行时的日志文件
/src:存放Tomcat的源代码
/webapps:Tomcat的主要Web发布目录,默认情况下把Web应用文件放于此目录
/work:存放JSP编译后产生的class文件

Tomcat的配置文件

Tomcat的配置基于两个配置文件:
1.server.xml - Tomcat的全局配置文件

2.web.xml - 在Tomcat中配置不同的关系环境

$CATALINA_HOME/conf/server.xml配置简介
XML其中包括:
<Server>
<Service>
<Connector/>
<Engine>
<Host>
<Context>
</Context>
</Host>
</Engine>
</Service>
</Server>
1 顶层类元素[TopLevel Elements]: 位于整个配置文件的顶层, 包括<Server>和<Service>;
2 连接器类元素[Connectors ]: 客户和服务(容器类元素)间的通讯接口.接受客户请求,返回响应结果;<Connector>

3 容器类元素[Containers]: 处理客户请求并且生成响应结果,包含3个:<Engine> <Host> <Context>

4 嵌套类元素[Nested Components]: 可以加入到容器中的元素,包括:<logger> <Valve><Realm>等

一个<Server>包含一个或多个<Service>,一个<Service>包含唯一一个<Engine>和一个或多个<Connector>,多个 <Connector>共享一个<Engine>;一个<Engine>包含多个<Host>,每个<Host>定义一个虚拟主机,包含一个或多个web应用

<Context>元素是代表一个在虚拟主机上运行的Web应用.
<Server>元素属性port:指定一个端口,这个端口负责监听关闭tomcat的请求shutdown:指定向端口发送的命令字符串,通常是“SHUTDOWN”
<Service>元素属性name:指定service的名字,通常是”Catalina”
<Connector>元 素属性(表示客户端和service之间的连接):port:指定服务器端要创建的端口号,并使用这个断口监听来自客户端的请求minProcessors(考察是否有此属性):服务器端启动时创建的处理请求的线程数maxProcessors(考察是否有此属性):最大可以创建的处理请求的线程数maxThreads:服务器创建的最大线程数minSpareThreads:最小剩余线程数maxSpareThreads:最大 剩余线程数enableLookups:如果为true,则可以通过调用request.getRemoteHost()进行DNS查询来得到远程客户端
的实际主机名,若为false则不进行DNS查询,而是返回其IP地址redirectPort:指定当服务器正在处理HTTP请求时收到了一个SSL传 输请求后重定向的端口号acceptCount:指定当所有可以使用的处理请求的线程数都被使用时,可以放到处理队列中的请求数,超过的请求将不予处理 connectionTimeout:指定超时的时间数(以毫秒为单位)disableUploadTimeout:不明debug:不明 protocol:不明
<Engine>元素属性(指定service中的请求处理主机,接收和处理来自Connector的请求)name:指定Engine的名字,通常是”Catalina”defaultHost:指定默认的处理请求的主机名,至少与某个host元素的name属性值是相同的
<Context>元素属性(表示一个web应用程序)docBase:指定此Web应用的绝对或相对路径,也可以为WAR文件的路径path:表示此Web应用程序的url的入口,如为“/hello“,则请求的URL为http://localhost:8080/hello/reloadable:如果为true,则Tomcat在运行时会自动监视Web应用的/WEB-INF/lib和/WEB-INF/classes下文件的改动,自动装载新应用,使我们可以在不重启Tomcat的情况下更新Web应用
<Host>元 素属性(表示一个虚拟主机)name:指定虚拟主机名字debug:指定日志级别appBase:存放Web应用程序的基本目录,可以是绝对路径或相对 于CATALINAHOME的目录,默认是CATALINA_HOME/webappsunpackWARs:如果为true,则tomcat会自 动将WAR文件解压后运行,否则不解压而直接从WAR文件中运行应用程序autoDeploy:如果为true,表示Tomcat启动时会自动发布 appBase目录下所有的Web应用(包括新加入的Web应用)deployOnStarup:如果此项为true,表示Tomcat服务器启动时会自
动发布appBase目录下所有Web应用。如果Web应用在server.xml中没有相应的<Context>元素,则将采用默认的 Context配置。deployOnStarup的默认设置是truealias:指定虚拟主机的别名,可以指定多个别名xmlValidation:不明xmlNamespaceAware:不明
<Logger>元 素属性(表示日志,调试和错误信息)className:指定logger使用的类名,此类必须实现org.apache.catalina.Logger 接口prefix:指定log文件名的前缀(文件名)suffix:指定log文件名的后缀(扩展名)timestamp:如果为true,则log文件 名中会加入日期时间,如下例:localhost_log.2006-10-04.txtdirectory:指定log文件存放的目录
<Realm>元素属性(表示存放用户名,密码及role的数据库)className:指定Realm使用的类名,此类必须实现org.apache.catalina.Realm接口resourceName:不明
<Valve>元 素属性(功能与Logger相似,其prefix和suffix属性解释和Logger中的一样)className:指定Valve使用的类名,如用org.apache.catalina.valves.AccessLogValve类 可以记录应用程序的访问信息directory:指定log文件存放的位置pattern:有两个值,common方式记录远程主机名或ip地址、用户 名、日期、第一行请求的字符串、HTTP响应代码、发送的字节数。combined方式比common方式记录的值还多

$CATALINA_HOME/conf/web.xml配置简介
Tomcat可以让用户通过将缺省的web.xml放入conf目录中来定义所有关系环境的web.xml的缺省值.建立一个新的关系环境 时,Tomcat使用缺省的web.xml文件作为基本设置和应用项目特定的web.xml(放在应用项目的WEB-INF/web.xml文件)来覆盖 这些缺省值.

默认Web应用的首页文件的设置
<welcome-file-list>
<welcome-file>index.html</welcome-file>
<welcome-file>index.htm</welcome-file>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>
报错文件的设置
a.如果某文件资源没有找到,服务器要报404错误,按下述配置则会调用\webapps\ROOT\notFileFound.jsp
<error-page>
<error-code>404</error-code>
<location>/notFileFound.jsp</location>
</error-page>
b.如果执行的某个JSP文件产生NullPointException,则会调用\webapps\ROOT\null.jsp
<error-page>
<exception-type>java.lang.NullPointerException</exception-type>
<location>/null.jsp</location>
</error-page>
session 会话过期时间的设置,单位是分钟
<session-config>
<session-timeout>30</session-timeout>
</session-config>servlet的设置<servlet>
<servlet-name>default</servlet-name>
<servlet-class>org.apache.catalina.servlets.DefaultServlet</servlet-class>
<init-param>
<param-name>debug</param-name>
<param-value>0</param-value>
</init-param>
<init-param>
<param-name>listings</param-name>
<param-value>true</param-value>
</init-param>
<load-on-startup>1</load-on-startup>

</servlet>

说明:<servlet-name>:定义Servlet的名字。<servlet-class>:指定实现这个Servlet 的类。<init-param>:定义Servlet的初始化参数(包括参数名和参数值),一个 <servlet>元素中可以有多个<init-param>元素。<load-on-startup>:指定当 Web应用启动时,装载Servlet的次序。当这个值为正数或零,Servlet容器先加载数值小的Servlet,再一次加载其他数值大的 Servlet。如果这个值为负数或没有设定,Servlet将在Web客户首次访问这个Servlet时加载它。filter过滤器的设置
<filter>
<filter-name>FilterSource</filter-name>
<filter-class>project4.FilterSource </filter-class>
</filter>
<filter-mapping>
<filter-name>FilterSource</filter-name>
<url-pattern>/WwwServlet</url-pattern>
(<url-pattern>/haha/*</url-pattern>)
</filter-mapping>
过滤:1) 身份验证的过滤Authentication Filters2) 日志和审核的过滤Logging and Auditing Filters3) 图片转化的过滤Imageconversion Filters4) 数据压缩的过滤Data compression Filters5) 加密过滤Encryption Filters6) Tokenizing Filters7) 资源访问事件触发的过滤Filters that trigger resource access events
XSL/T 过滤XSL/T filters9) 内容类型的过滤Mime-type chainFilter注意监听器的顺序,如:先安全过滤,然后资源,然后内容类型等,顺序可以自己定。

Tomcat管理

1 管理员帐户配置($CATALINA_HOME/conf/tomcat-users.xml)在tomcat-users.xml文件相应的位置添加一 行:<username=”user” password=”user”roles=”standard,manager”/>用来添加一个管理员帐户。然后重起tomcat,在浏览器中输入地址http://localhost:8080/manager/,在弹出的对话框输入上面的用户名和密码即可
2 Web应用列表在浏览器中输入http://localhost:8080/manager/list,浏览器将会列出目前存在的所有Web应用的信息,分别为:Web应用程序的路径、当前状态、连接这个Web应用的Session数目
3 重新装载Web应用程序在浏览器入 http://localhost:8080/manager/reload?path=/examples
浏览器显示如下:OK - Reloaded application atcontext path /examples,这表示example应用程序装载成功,如果我们将server.xml的Context元素的reloadable属性设为 true,则没必要利用这种方式重新装载Web应用程序,因为tomcat会自动装载。
4 显示Session信息在浏览器中输入http://localhost:8080/manager/sessions?path=/examples,浏览器显示如下:OK
- Session information forapplication at context path /examples Default maximum session inactive interval30 minutes
5 启动和关闭应用程序在浏览器中输入http://localhost:8080/manager/start?path=/examplehttp://localhost:8080/manager/stop?path=/examples分别启动和关闭examples应用程序。部署及撤销部署WAR有两种组织方式,一种是按一定的目录结构组织文件,一种是一个后缀为WAR的压缩包,因此它的部署方式也有两种:a.在浏览器中输http://localhost:8080/manager/install?path=/examples&war=file:/c:\examples,就会将按目录结构组织的WAR部署b.在浏览器中输入:http://localhost:8080/manager/install?path=/examples&war=jar:file:/c:\examples.war!/,就会将按压缩包组织的WAR部署,注意此url后半部分一定要有!/号部署后就可以用:http://localhost:8080/examples访问了在浏览器中输入:http://localhost:8080/manager/remove?path=/examples,就会撤销刚才部署的应用程序

Java web组成

Java web应用由一组静态HTML页、Servlet、JSP和其他相关的class组成。每种组件在web应用中都有固定的存放目录。web应用的配置信息存放在web.xml文件中。在发布某些组件(如Servlet)时,必须在web.xml文件中添加相应的配置信息

web应用具有固定的目录结构,比如开发一个名为helloapp的应用,在<CATALINA_HOME>/webapps目录下创建这个目录结构。
/helloapp web应用的根目录,所有的JSP和HTML文件都存放于此目录下

/helloapp/WEB-INF存放web应用的发布描述文件web.xml

/helloapp/WEB-INF/classes存放各种class文件,Servlet类文件也放于此目录

/helloapp/WEB-INF/lib 存放web应用所需的各种JAR文件,比如可以存放JDBC驱动程序的JAR文件
tomcat的类装载器先装载classes目录下的类,再装载lib目录下的类,如果两个目录下存在同名的类,classes目录下的类具有优先权
在server.xml中加入<Context>元素

<Context>元素是<CATALINA_HOME>/conf/server.xml中使用最频繁的元素,它代表了运行在<Host>上的单个Web应用,一个<Host>中可以有多个<Context>元素,每个Web应用必须有唯一的URL路径,path属性设定。

<!–Define the default virtual host–>

<Host name=”localhost” debug=”0”appBase=”webapps” unpackWARs=”true”autoDeploy=”true”>

….

….

<Context path=”/helloapp”docBase=”helloapp” debug=”0” reloadable=”true”/>

</Host>
path属性:指定访问该web应用的URL入口

docBase:指定web应用的文件路径,可以给绝对路径,也可以给Host的appBase的相对路径

reloadable:如果设置为true,tomcat服务器在运行状态下会监视在WEB-INF/classes和lib目录下class文件的改动,如果被更新,服务器会自动重新加载web应用
也可以放在你想放的任何位置的。

在server.xml中,

<Host ….>

<!–加上如下这句话–>

<Context path=”/myweb” docBase=”c:/jsp” debug=”0”

reloadable=”true” crossContext=”true” />

</Host>

然后你的文件全部放在c:\jsp下,用 http://IP:port/myweb/index.jsp 来访问
创建并发布WAR文件

1>进入helloapp应用的根目录<CATALINA_HOME>/webapps目录下

2>把整个Web应用打包为helloapp.war,命令为: jar cvf helloapp.war*.*(解压参数为xvf)

3>把helloapp.war文件复制到<CATALINA_HOME>/webapps目录下

4>删除原来的helloapp整个目录(一定要删除整个目录)

5>启动Tomcat服务器

根据<CATALINA_HOME>/conf/server.xml里面Host的unpa
ae7c
ckWARs属性,如果为true,则Tomcat启动的时候会自动把war文件解压,展开为开放式的目录结构
假设来自客户的请求为:
http://localhost:8080/wsota/wsota_index.jsp
1) 请求被发送到本机端口8080,被在那里侦听的Coyote HTTP/1.1 Connector获得

2) Connector把该请求交给它所在的Service的Engine来处理,并等待来自Engine的回应

3) Engine获得请求localhost/wsota/wsota_index.jsp,匹配它所拥有的所有虚拟主机Host

4) Engine匹配到名为localhost的Host(即使匹配不到也把请求交给该Host处理,因为该Host被定义为该Engine的默认主机)

5) localhost Host获得请求/wsota/wsota_index.jsp,匹配它所拥有的所有Context

6) Host匹配到路径为/wsota的Context(如果匹配不到就把该请求交给路径名为”“的Context去处理)

7) path=”/wsota”的Context获得请求/wsota_index.jsp,在它的mapping table中寻找对应的servlet

8) Context匹配到URL PATTERN为*.jsp的servlet,对应于JspServlet类

9) 构造HttpServletRequest对象和HttpServletResponse对象,作为参数调用JspServlet的doGet或doPost方法

10)Context把执行完了之后的HttpServletResponse对象返回给Host

11)Host把HttpServletResponse对象返回给Engine

12)Engine把HttpServletResponse对象返回给Connector

13)Connector把HttpServletResponse对象返回给客户browser

context节点的正确存放位置参考文档: http://localhost:8080/docs/config/context.html http://f51889920.iteye.com/blog/1884830 http://blog.sina.com.cn/s/blog_3e32ac59010007o1.html http://blog.sina.com.cn/s/blog_62cb15980101jh9x.html http://www.360doc.com/content/08/0820/09/72742_1558551.shtml http://java.chinaitlab.com/Tomcat/757612.html
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息