0

我已经做了几年网络开发人员(一些 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 怎么办?

4

2 回答 2

0

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

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

先于先(仅限 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 中设置主机上下文。从我在线阅读的内容来看,不鼓励编辑 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”文件夹中。不知道为什么这是有效的......我担心这是它工作的情况之一,即使它不应该。我希望比我聪明得多的人能提供一些见解。

于 2010-02-26T22:07:32.380 回答
0

但是,如果我的应用程序中有使用从根开始的路径(即 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">
于 2010-02-10T23:24:54.260 回答