tomcat虚拟路径的映射

2017-2-10来源:心得技巧人气:546

tomcat的虚拟目录的映射:     虚拟目录映射,就是将web应用交给web服务器管理,然后就可以通过web服务器访问到这个资源。假设现在有一个专门用于发布新闻的web应用news,其位于c盘下,那么,如果配置tomcat,使得当我们访问tomcat服务器时会访问到news里的资源。      方式一、tomcat的自动映射,将news应用直接放在  tomcat主目录/webapps/,便可直接访问:http://localhost:8080/news/index.html         方式二、很多情况下,在实际的部署中,有可能web应用与tomcat服务器不在同一盘符下,即web应用没办法直接放在webapps目录下,这时就需要建立虚拟目录映射,以下介绍几种方法。  2.1 虚拟目录的映射方式:         1、在server.xml中配置web应用的目录映射。            配置tomcat主目录/conf/server.xml           对应的<Host>中加入<Context path="/java4fun" docBase="c:\news"  />  path为web应用的访问路径,docBase为web应用的实际路径。配置后重启tomcat便可访问:http://localhost:8080/java4fun/index.html。这种方法并不是官方所推荐的方法,因为配置server.xml后需要重启tomcat才能加载web应用。          2、在tomcat目录下的conf\Catalina\localhost目录中,创建一个用访问路径来命名的xml文件,比如hellojava.xml           在java.xml文件中添加<Context docBase="c:\news"/>,此方法不用指定path,因为path的值就是xml的文件名,配置后不用重启便可访问:http://localhost:8080/hellojava/index.html。 Context元素的path属性是用来配置虚似目录的名称的,所以虚似目录的名称就是这个xml文件的名称。   $CATALINA_BASE指的就是tomcat服务器根目录,[enginename]指的是Tomcat服务器使用的引擎名称,Tomcat使用的引擎是Catalina 在drug.xml文件中添加Context元素映射JavaWeb应用,代码如下:   <Context path="/drug" docBase="D:/Apache/web/drug" debug="0" reloadable="true" crossContext="true"  caseSensitive="false"/>         3、多级目录映射,方法同2,只需将xml的文件命名为java#myweb.xml,便可访问:http://localhost:8080/java/myweb/1.html                  4、 缺省映射,将xml文件名命名为ROOT.xml,则该web应用将被作为默认的web应用来访问,所以可以直接访问:http://localhost:8080/index.html 参考Tomcat服务器文档:   In individual files (with a ".xml" extension) in the $CATALINA_BASE/conf/[enginename]/[hostname]/ directory. The context path and version will be derived from the base name of the file (the file name less the .xml extension). This file will always take PRecedence over any context.xml file packaged in the web application's META-INF directory.   意思就是:在tomcat服务器的confCatalinalocalhost目录下添加一个以xml作为扩展名的文件,xml文件的名字可以任意取,比如下面的aa.xml,注意这一句话"The context path and version will be derived from the base name of the file",这一句话的意思翻译过来就是"context元素的path属性源自于是这个xml文件的名字",上面提到过,Context元素的path属性是用来配置虚似目录的名称的,所以虚似目录的名称就是这个xml文件的名称。   $CATALINA_BASE指的就是tomcat服务器根目录,[enginename]指的是Tomcat服务器使用的引擎名称,Tomcat使用的引擎是Catalina      在aa.xml文件中添加Context元素映射JavaWeb应用,代码如下: 注意:在Context元素中并没有指明path属性来设置虚拟目录的名称,那么"F:JavaWebDemoProject"映射的虚拟目录名称是神马呢,就是当前正在编辑的这个xml文件的名称aa。       使用这种方式映射虚拟目录的最大好处是修改了配置文件后不用重启Tomcat服务器,比如将aa.xml修改成bb.xml,Tomcat服务器会自动Undeploying context [/aa],然后自动信息: Deploying configuration descriptor D:apache-tomcat-7.0.53confCatalinalocalhostb.xml
2.2、虚拟目录的映射方式3:让tomcat服务器自动映射   tomcat服务器会自动管理webapps目录下的所有web应用,并把它映射成虚似目录。换句话说,tomcat服务器webapps目录中的web应用,外界可以直接访问。   例如:把F盘下的JavaWebDemoProject这个JavaWeb应用直接copy到tomcat服务器webapps目录中      此时Tomcat服务器就会自动为JavaWebDemoProject这个JavaWeb应用映射一个同名的虚拟目录"/JavaWebDemoProject",然后就可以使用浏览器访问这个JavaWeb应用的资源了          三、Tomcat服务器配置虚似主机3.1、配置虚拟主机   配置虚似主机就是配置一个网站。   在Tomcat服务器配置一个虚拟主机(网站),需要修改conf文件夹下的server.xml这个配置文件,使用Host元素进行配置,打开server.xml,可以看到Tomcat服务器自带的一个名称为localhost的虚拟主机(网站),如下图所示:       平时我们将开发好的JavaWeb应用放到webapps文件夹下,然后就可以使用"http://localhost:端口号/JavaWebAppName"的方式去访问了,其实访问的就是name是"localhost"的那台虚拟主机(Host),这台虚拟主机管理webapps文件夹下的所有web应用。   例如:http://localhost:8080/JavaWebDemoProject/1.jsp,这个URL地址访问的就是名称是localhost的那台虚拟主机下的JavaWebDemoProject这个应用里面的1.jsp这个web资源。   我们可以使用如下的方式配置一个虚拟主机,例如:     <Host name="www.gacl.cn" appBase="F:\JavaWebApps"> </Host> 复制代码   这里我们新配置一个虚拟主机,虚拟主机的name是"www.gacl.cn",虚拟主机"www.gacl.cn"现在管理着JavaWebApps文件夹下的所有web应用,平时我们在互联网上使用域名"www.baidu.com"访问百度的网站时,其实就是在访问一个名称是"www.baidu.com"的虚拟主机,所以当我们要访问name是"www.gacl.cn"的这个虚拟主机时,就可以使用"域名(www.52itstyle.com)"去访问,注意一下appBase="F:JavaWebApps",这里的JavaWebApps文件夹代表的不是一个项目的根目录,而是一个存放了一个或者多个JavaWeb应用的文件夹,如下图所示:     就好像是Tomcat服务器的webapps文件夹一样,里面存放了很多的JavaWeb应用