zoukankan      html  css  js  c++  java
  • Tomcat虚拟路径

    Tomcat虚拟路径

    415人阅读 评论(0) 收藏 举报
    在tomcat安装好后,只要把你的web项目copy到%TOMCAT_HOME%webapp下面就可以是使用啦!!其实还有种方法就是设定虚拟目录,即把项目的目录映射到tomcat中。这样做即可以不用重复的部署,节约时间,而且给开发人员带来方便。
    方法如下:
    1,找到%TOMCAT_HOME%/conf/server.xml,(即tomcat的安装目录下面相关的文件)打开此xml文件,在 <host> </host>之间加入如下代码:

    <Context path="" reloadable="true" debug="0" docBase="E:/workspace/test/bin" workDir="E:/workspace/test/work" crossContext="true" >
    </Context>

    <Context path="/test" docBase="E:/aaa" debug="0" reloadable="true"/>

        docBase是实际路径,这里一般写一个绝对的磁盘路径,当然也可以写 相对路径,相对路径是相对于tomcat安装目录的webapps目录的,通常设置虚拟目录的目的是将tomcat的安装和项目的保存分开,所以这里建议你使用磁盘绝对路径,并且这个磁盘路径不时在tomcat安装目录下。workDir是tomcat运行是对JSP文件做编译后的文件,这个文件最好也是分开。
    path为虚拟路径,访问时的路径,注意:一定要加“/”。值得注意的是:path可以为 "/"那么访问“IP:端口”就可以访问到布置的工程,如果为"/test",那么必须得访问“IP:端口/test”才能访问到,我建议采用第一种方法。不然访问每个工程都得有个虚拟路径,看上去不舒服。可能你会想到如果我有多个工程怎么办?是不是一定得取几个虚拟路径,如果你用一个IP的话那是肯定的。但是如果你把机器多设置几个IP,那么就行了,每个工程占用一个IP,这样层次结构更加清晰。
    debug建议设置为0,reloadable设置为true。


    2,如果在测试中出现404的错误,如果前面配置没有错,可能就是在%TOMCAT_HOME%/conf/web.xml文件中把虚拟路径显示目录给禁止啦,此时可以在web.xml文件中找到
    <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>false</param-value>
    </init-param>
    <load-on-startup>1</load-on-startup>
    </servlet>
    将listings的value改为true,然后重新启动tomcat,在输入url,测试成功!


    3,如果项目开发完成,准备部署在服务器上时,记住要把第三步中web.xml文件中参数listings的值改为false,这样可以避免把项目的部署路径呈现给使用者!
    具体如下:
    <init-param>
    <param-name>listings</param-name>
    <param-value>false</param-value>
    </init-param>

    4、访问多台机器文件问题:

    文件太多的时候必然需要跨目录或跨盘,这个时候就需要用到虚拟目录,但是Tomcat 不能直接跨Context 进行Forward。
    例如:
    用 Context 配置映射了虚拟目录 data1, 目录下有文件 123.txt
    如果要在 / 下直接 forward 到 "/data1/123.txt" 是不行的,会提示 404 找不到文件。

    那么就需要灵活应用Tomcat 虚拟目录映射:
    在 D:/Tomcat/conf/Catalina/test 目录下(test为Server.xml配置文件中的域名) 增加 一个 xml 文件,(test要创建),创建之后加上这个样一个XML文件(这里就取名为data1.xml):
    <Context docBase="//IP/data1" reloadable="false" crossContext="true" />
    并且修改 Server.xml 中的 Context 允许 crossContext="true"。
    那么就可以在工程中访问另外台机器上的文件(当然这个台机器需要共享访问的文件)。例如:
    <img src="/data1/001/002/003.png">,来显示图片。

    问题又来了,就是权限问题,共享的文件不想给任何人访问的话,就需要设置共享权限,那么就需要配置tomcat的权限:
    1、在共享的机器上设置tomcat帐户和密码,并加入共享权限。
    2、然后在放tomcat的服务器上,设置相同的tomcat帐户和密码。
    3、在tomcat服务上配置登录账号和密码。

    在服务里找到tomcat,右键属性,标签第二项就是,如图:

    --------------------------------一下来自百度------------------------------------------------------

    多说几句

    Tomcat 6与Tomcat 5或者之前版本不一样的就是,首页没有显示具体的版本,猫猫也变大了些。
    没有admin管理页面了,admin在Tomcat 5.5来默认都没有了,不过可以下载admin包(http://tomcat.apache.org/download-55.cgi下载Administration Web Application: )。
    而Tomcat 6.0没有看见admin包,不过这并不要紧,一般情况下也不需要admin包。

    Tomcat 6.0默认也没有开启servlet、禁止目录浏览。这需要去conf/下配置web.xml文件。

    修改listings为true即可以目录浏览

    <param-name>listings</param-name>
    <param-value>true</param-value>
    <!-- false disable listings -->
    <!-- <param-value>false</param-value>-->

    开启servlet直接访问功能,把这两段注释打开

    <servlet>
    <servlet-name>invoker</servlet-name>
    <servlet-class>
    org.apache.catalina.servlets.InvokerServlet
    </servlet-class>
    <init-param>
    <param-name>debug</param-name>
    <param-value>0</param-value>
    </init-param>
    <load-on-startup>2</load-on-startup>
    </servlet>

    <servlet-mapping>
    <servlet-name>invoker</servlet-name>
    <url-pattern>/servlet/*</url-pattern>
    </servlet-mapping>


    2.4 部署一个新项目chengqun,去conf/下配置server.xml

    <Context path="/chengqun" docBase="d:\tomcat\webapps\chengqun"></Context>

    chengqun是你程序的目录 重启Tomcat,访问http://127.0.0.1:8080/chengqun就可以访问了

    ======================================================================================================================
    域名绑定与虚拟目录设置:

    server.xml 的修改方式如下:

    (一)多域名绑定

    1.如果你要绑定网站,首先是要把tomcat的默认访问端口8080,修改成80

    原始:
    <Connector port="8080" protocol="HTTP/1.1"
    connectionTimeout="20000"
    redirectPort="8443" />

    修改后:
    <Connector port="80" protocol="HTTP/1.1"
    connectionTimeout="20000"
    redirectPort="8443" />

    其实这里就是把port:8080,修改成port:80就可以了,其他的参数不变

    2.接下来就是重点了哈哈...

    单个域名绑定:
    原始:
    <Engine name="Catalina" defaultHost="localhost">
    <Host name="localhost" appBase="webapps" unpackWARs="true" autoDeploy="true" xmlValidation="false" xmlNamespaceAware="false" />
    </Engine>
    当然这里我把注释代码统统删除掉了,省的碍眼


    修改后:
    <Host name="chengqun.202.71one.com" debug="0" appBase="d:\wwwroot\chengqun"
    unpackWARs="true" autoDeploy="true"
    xmlValidation="false" xmlNamespaceAware="false">
    <Context path="/" docBase="d:\wwwroot\chengqun"></Context>
    </Host>


    <Host name="chengqun1.202.71one.com" debug="0" appBase="d:\wwwroot\chengqun1"
    unpackWARs="true" autoDeploy="true"
    xmlValidation="false" xmlNamespaceAware="false">
    <Context path="/" docBase="d:\wwwroot\chengqun1"></Context>
    </Host>

     

    多域名绑定:

    <Host name="chengqun.202.71one.com" debug="0" appBase="d:\wwwroot\chengqun"
    unpackWARs="true" autoDeploy="true"
    xmlValidation="false" xmlNamespaceAware="false">
    <Alias>chengqun.202.71one.com</Alias>
    <Alias>chengqun1.202.71one.com</Alias>
    <Alias>chengqun2.202.71one.com</Alias>
    <Context path="/" docBase="d:\wwwroot\chengqun"></Context>
    </Host>

    这里面的参数还有很多,我也不是很清楚,不过这样做确实可以实现多域名绑定哈哈.而且网站页面修改了只要直接覆盖就可以了,tomcat可以自动更新类和页面,当然如果修改了web.xml或lib,则需要重启tomcat才可以.


    (二)虚拟目录
    (1)
    <Host name="chengqun.202.71one.com" debug="0" appBase="d:\wwwroot\chengqun"
    unpackWARs="true" autoDeploy="true"
    xmlValidation="false" xmlNamespaceAware="false">
    <Context path="/chengqun" docBase="d:\wwwroot\chengqun"></Context>
    </Host>
    其中,Host标记是用来配置虚拟主机的,就是可以多个域名指向一个tomcat,格式只要参考默认的就

    可以了。

    <context>是Host标记的子元素吧,表示一个虚拟目录,它主要有两个属性,path就相当于虚拟目录名字

    而 docbase则是具体的文件位置。在这里我的虚拟路径名称为chengqun,实际上我的程序也就是html、jsp、servlet都 放在了d:\wwwroot\chengqun这个目录下了。

    这样我就可以通过 chengqun.202. com/chengqun 访问我的这个虚拟目录了。

    另外一种方法是:

    <Host name="chengqun.202. com" debug="0" appBase="d:\wwwroot\chengqun"
    unpackWARs="true" autoDeploy="true"
    xmlValidation="false" xmlNamespaceAware="false">
    <Context path="/" docBase="d:\wwwroot\chengqun"></Context>
    </Host>

    这样设置以后,输入域名可以访问这个站点程序了(Context path="/"这里不同

    (2)
    没有指定默认站点,所以直接输入IP的时候,无法访问。如何让输入ip就可以访问指定的站点呢?
    修改server.xml的 <Engine name="Catalina" defaultHost="chengqun.202. com">
    这样就可以实现了输入ip访问chengqun.202. com这个站点的程序了!


    tomcat如何把web项目部署到磁盘的任意目录

    一,为了说明此问题的解决方案,我们需要假定几个条件:

           1. 我们的tomcat安装在: D:\tomcat5.5

            2. 我们已经完成了一个web项目: mobile_app

           3.我们把此项目放到了E盘的根目录下:E:\mobile_app

    二, 把此项目配置到tomcat服务器中:

            1. 到D:\tomcat5.5下找到conf文件夹,在此文件夹下依次找到Catalina\localhost文件夹

            2. 在conf\Catalina\localhost目录下新建一个mobile_app.xml文件,注意这个文件名既代表

                了此web项目的名称

            3. 编辑此mobile_app.xml文件

               <Context docBase="E:\mobile_app"></Context>

  • 相关阅读:
    input表单元素的默认padding不一致问题
    【转】iOS25彩票 幸运转盘
    微分起源
    转载--微分几何为何必然兴起?
    前缀和?or差分序列?
    noip2014 小结
    2019艾瑞(北京)年度高峰会议-数能驱动新变量
    MSF初体验
    s实现指定时间自动跳转到某个页面
    css实现居中
  • 原文地址:https://www.cnblogs.com/lteal/p/2814749.html
Copyright © 2011-2022 走看看