【问题标题】:tomcat 5.5 setting up context path with virtual hosts (non webapps directory)tomcat 5.5 使用虚拟主机设置上下文路径(非 webapps 目录)
【发布时间】:2011-01-15 10:31:30
【问题描述】:

我已经做了几年网络开发人员(一些 ASP,主要是 PHP),最近两年开始研究 Java/JSP。

我反复尝试但仍然无法理解的一件事是在另一个位置(不是 webapps 文件夹)中设置工作 JSP 应用程序的方法。让我的应用脱离 webapps 对我来说似乎不是问题。

有人可以帮忙分解一下吗,或者指点我在某个地方发布概述它的地方?

我已经反复谷歌搜索并阅读并重新阅读了 apache.org 网站上的文档,但我似乎仍然无法得到它:(

我正在尝试设置一个“爆炸”站点(文件夹和文件分开 - 不是 WAR 的一部分)。

我知道我可以编辑 server.xml 文件,但不应该这样做(这并不重要……即使我尝试编辑失败)。

我知道我在路径的工作方式上遗漏了一些东西。我以为我明白,但我不这么认为。

非常感谢任何帮助!

喜欢这个网站。

-- 我决定更详细地重新表述我的问题--

假设我的目录结构如下(**注意:webproject 不在 tomcat/webapps 目录中)

/webproject
/webproject/htdocs
/webproject/htdocs/images
/webproject/htdocs/images/logo.gif
/webproject/java
/webproject/java/page1.jsp
/webproject/java/page2.jsp 

我想设置一个虚拟主机,以便我可以通过 URL 查看我的项目:http://webproject

我认为我只需要两件事(我正在使用 apache):

  1. 我的 httpd.conf 文件中有一个“VirtualHost”条目。
  2. 某处的某种“上下文”文件或片段。

我说的对吗?如果是这样,有人可以帮我定义这两个元素吗?

另外,如果我想使用域相对 URL 从我的任一 jsp 页面中引用我的 logo.gif 文件,我的路径会是什么样子?

如果我想使用域相对 URL 从 page1.jsp 引用 page2.jsp 怎么办?

【问题讨论】:

    标签: apache jsp configuration virtualhost tomcat5.5


    【解决方案1】:

    好的,经过努力,我终于让它工作了。我并不是说这是最好的(甚至是正确的!)方法,但这是最终在我的 Windows 机器(运行 WAMP)和运行 Linux 的远程服务器上对我有用的方法。

    列出的路径是它们在我的环境中的位置。显然,这可能会因您的情况而有所不同。

    BEFORE-FIRST(仅限 Windows)

    对于 Windows,您需要在主机文件中为新的“域”设置一个条目。

    WIN - C:\Windows\System32\drivers\etc\hosts

    127.0.0.1 webproject.local
    

    第一

    需要编辑httpd.conf并添加虚拟主机

    WIN - C:\wamp\bin\apache\Apache2.2.11\conf\extra\httpd-vhosts.conf

    LINUX - /etc/httpd/conf/httpd.conf

     <VirtualHost *:80>
         DocumentRoot "C:\wamp\www\webproject"
         ServerName webproject.local
     </VirtualHost>
    

    第二次

    在 server.xml 中设置 hostcontext。根据我在网上阅读的内容,不鼓励编辑 server.xml,但这是我能弄清楚的唯一方法。

    WIN - C:\Program Files (x86)\Apache Software Foundation\Tomcat 5.5\conf\server.xml

    LINUX - etc/tomcat5/server.xml

    <Host name="webproject" debug="0" appBase="webapps" unpackWARs="true">
       <Context path="" docBase="C:/wamp/www/webproject"/>
       <Logger className="org.apache.catalina.logger.FileLogger" directory="logs" prefix="webproject.local_error-log." suffix=".txt" timestamp="true"/>
    </Host>
    

    我认为不对,但对我有用的是使用“webapps”作为 appBase,即使我的文件不在“webapps”文件夹中。不知道为什么这是有效的......我担心这是它工作的情况之一,即使它不应该。我希望比我聪明得多的人能提供一些见解。

    【讨论】:

      【解决方案2】:

      但是,如果我的应用程序中有使用从根开始的路径(即 img src="/htdocs/images/foo.gif")引用资源(图像、脚本等)的路径没有找到。

      您是否知道这些路径应该是相对于当前请求 URL(JSP 页面之一)的 URL,因此 不是 相对于它们在本地位置的本地磁盘文件系统路径磁盘文件系统?当您使用/htdocs 时,看起来您认为是后者。

      因此,例如,如果 JSP 页面由 http://example.com/context/page.jsp 请求,而 foo.gif 实际上由 http://example.com/context/images/foo.gif 提供,那么您需要使用任一页面相对 URL:

      <img src="images/foo.gif">
      

      或域相对 URL:

      <img src="/context/images/foo.gif">
      

      或协议相关的 URL:

      <img src="//example.com/context/images/foo.gif">
      

      或绝对网址:

      <img src="http://example.com/context/images/foo.gif">
      

      【讨论】:

      • 感谢您的帮助。我对“htdocs”的使用是一个糟糕的例子,因为我知道该文件夹通常用于引用本地文件系统来传递网页。但是在这种情况下它不是(归咎于我客户的编码标准)。所以,我使用的是域相对 URL。
      • 话虽如此...您在所有 URL 示例中使用的术语“上下文”是我认为我缺少的。因此,即使使用“htdocs”,我想我的 URL 也需要是:“/context/htdocs/images/foo.gif” 接下来,我是否需要使用上下文?或者有什么方法可以在没有上下文的情况下设置我的域相对 URL? IE。 “/htdocs/images/foo.gif”? Tomcat 是否需要上下文?
      • 您只需要确保相对 URL 与“父”页面的请求 URL 相比,与她的绝对位置相匹配。再次检查上述 URL 示例。如果还是卡住了,那么请把 JSP 页面和图片文件的absolute URL(也就是你在浏览器地址栏中看到的URL)贴出来,然后我'将告诉图像的相对 URL 在 JSP 页面中使用时的外观。
      • 我试图重新表述我的问题......我真的要感谢 BalusC 的宝贵时间。我挖鹦鹉。
      猜你喜欢
      • 2012-09-05
      • 2012-03-09
      • 2013-05-27
      • 1970-01-01
      • 2013-01-30
      • 2012-03-14
      • 2018-08-17
      • 2020-01-23
      • 1970-01-01
      相关资源
      最近更新 更多