如何使用上下文路径将外部文件夹正确映射到Tomcat server.xml文件中?

时间:2017-02-15 15:21:42

标签: java tomcat tomcat7 servlet-container

我不是很喜欢 Tomcat 配置,我有以下疑问:

Tomcat 7 server.xml 配置文件包含 部分:

 <Host name="localhost"  appBase="webapps"
        unpackWARs="true"
        autoDeploy="true"
        xmlValidation="false" xmlNamespaceAware="false">


    <!-- SingleSignOn valve, share authentication between web applications
         Documentation at: /docs/config/valve.html -->
    <!--
    <Valve className="org.apache.catalina.authenticator.SingleSignOn" />
    -->

    <!-- Access log processes all example.
         Documentation at: /docs/config/valve.html
         Note: The pattern used is equivalent to using pattern="common" -->
    <Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
           prefix="localhost_access_log." suffix=".txt"
           pattern="%h %l %u %t &quot;%r&quot; %s %b" />

    <Context path="/my-project/images/" docBase="/data/myproject/cache/images/" />
  </Host>

我的主要疑问与最后一行有关:

<Context path="/my-project/images/" docBase="/data/myproject/cache/images/" />

/ data / myproject / cache / images / 包含一些其他文件夹,其中包含我的Java EE项目使用的图像。

那究竟是什么意思呢?

我认为这意味着它将 / my-project / images / 文件夹映射到外部文件夹(项目外部) / data / myproject / cache / images / < /强>

这种推理是否正确?

我的问题是我的应用程序启动但这些图像没有显示。

所以具体情况如下:这些图像不直接存储在 / data / myproject / cache / images / 外部文件夹中,而是放在此文件夹的子目录中,类似这样:

**/data/myproject/cache/images/subdir1/1.png**
**/data/myproject/cache/images/subdir1/2.png**
**/data/myproject/cache/images/subdir1/3.png**

**/data/myproject/cache/images/subdir2/4.png**
**/data/myproject/cache/images/subdir2/5.png**
**/data/myproject/cache/images/subdir2/6.png**

所以我想也许我必须改变这一行:

<Context path="/my-project/images/" docBase="/data/myproject/cache/images/" />

以这种方式调用类似 / my-project / images / subdir1 的方式,它被映射到 / data / myproject / cache / images / subdir1 /

如果这可能是我的问题(我绝对不确定),我该如何指定这种特殊行为?

1 个答案:

答案 0 :(得分:1)

路径是项目资源的访问网址, docBase 是文件夹的真实路径

"/data/myproject/cache/images/subdir1"

如果您的图片位于此处:conf/Catalina/localhost 并且您希望通过浏览器中的URL访问这些图像。 试试这个 1.找到tomcat中的文件夹。

*.xml

2。创建一个文件

<?xml version="1.0" encoding="UTF-8" ?> 
<Context docBase="/data/myproject/cache/images/subdir1" path="/subdir1" debug="0" reloadable="true" />

3。在其中添加这些代码

http://localhost:8080/subdir1/1.png

4。像这样保存图像路径:

<script>
var jt_width = screen.width;
function doAThing() {
  if (jt_width < 361) {
    document.write('<div class="small-image"><img src="http://www.example.com/small-image.jpg" alt="small image alt"></div>') } else { document.write('<div class="large-image"><img src="http://www.example.com/large-image.jpg" alt="large image alt"></div>')
  };
}

doAThing();
window.addEventListener('resize', doAThing);
</script>

5。重新启动tomcat服务器以启用并加载&#34; * .xml&#34;你已经编辑过。 尝试第4步中的网址。你能看到图片吗?如果没有,请告诉我你会得到什么样的错误。我会帮你搞清楚。