正如上篇博文 server.xml 配置详解 中所提到的那样,tomcat的默认映射路径是 host 标签的
appBase 属性(应用程序基本目录,即存放应用程序的目录 “这个目录下的内容可以通过url访问到”)。那么,我可以修改这个应用程序基本目录吗?可以把它指向到我的工程吗?
tomcat映射路径的配置方法
一、默认配置
位置:/conf 文件夹里的server.xml文件
<Host appBase="webapps">
appBase:可以指定绝对目录,也可以指定相对于<CATALINA_HOME>的相对目录.如果没有此项,默认为<CATALINA_HOME>/webapps .
以上定义了默认根目录为"webapps"(相对路径,相对于<CATALINA_HOME>)
二、添加<Context>标签
位置:/conf 文件夹里的server.xml文件
可以通过在Host标签下加上多个Context tag来创建自定义访问。一般我们用Context来覆盖Host的appBase的设定而不是直接修改appBase。
eg:
<Context path="" docBase="ROOT" debug="0"/>
<Context path="/sample" docBase="sample" debug="0" reloadbale="true"/>
<Context path="" docBase="D:JavaWorkservletservlet" debug="0" reloadbale="true"/>
path: Host的虚拟目录
docBase: 映射的物理目录的地址,可指定相对路径,相对appBase下,也可以指定绝对路径(例如:D:Workes esttomcatWebRoot)。如果无此项则默认为appBase/ROOT 。
Context 一:
path=""(注意不是path="/"),则相当于是这个Host的虚拟根目录,docBase则指出了物理目录的位置为相对于appBase下的ROOT目录。因此在访问在浏览器中输入http://localhost:8080/,则访问到的是webapps下的ROOT目录。
Context 二:
如果你访问http://localhost:8080/sample/ ,则会访问到appBase/sample里的内容。
Context 三:
path="",指的是这是Host的虚拟根目录,而docBase指出物理目录是个绝对地址,因为如果你访问http://localhost:8080/ ,则会访问到的是D:JavaWork/servlet/servlet 里的内容 。
三、编写xml文件
位置:conf/catalina/localhost/ 目录下
对于tomcat5.x版本,可以通过在conf/catalina/localhost/目录下的编写xml文件,在其中设置<Context>元素来进行映射。不过,是由以当前xml文件的名称做为虚拟子目录,而不是由path指定。
PS. 这种方法需要重启服务器。
eg:添加myapp.xml
<?xml version='1.0' encoding='utf-8'?>
<Context path="/myapp" docBase="工程地址" debug="0" reloadbale="true">
XML文件名称:Host的虚拟目录
docBase:物理目录的绝对地址。
重启服务器后http://localhost:8080/myapp/将被映射到“工程地址”路径下 。