2

现在我正在尝试在 Eclipse Juno 和 Tomcat 7 上完成一个项目,该项目需要一个“虚拟文件夹”来保存多媒体文件(如图像、其他子页面等)。我已经有一些方法可以在基于 URI 的语法中给出文件路径(假设我想访问 /Content/Image 中的图像)并且我想将该 URI 映射到 C:\Users\MyUser\Content\image(我我知道我正在将项目绑定到 Windows 系统,但稍后我将在此问题中解决)。

目前我的项目名为 pj,Eclipse 在 eclipse 的 tomcat 实例中创建了一个名为 pj 的上下文(这很有意义)。当我测试我的项目时

> http://localhost:8080/pj

它工作正常(它应该)。

但是这里有一个问题:直到现在我还没有找到一种方法来在 tomcat 中创建一个 URI 以实际转到 Content/Image 路径来获取要添加到我的页面的内容(在不健康的地方阅读以将内容保留在 WEB -INF 文件夹,所以我正试图以正确的方式完成它)。另请阅读某处以实现此目标,我必须在上下文中执行以下操作:

<context docbase="d:/images" path="/Content/Images"></context>

另请阅读 tomcat 中的内容,要解析 URI,您必须使用上下文来实现该目标(在 URI 的含义与其在文件系统中的位置之间架起一座桥梁)。尽管如此,从tomcat 4开始(如果没有记错的话)它不应该摆弄server.xml,所以在另一个尝试做到这一点时,我尝试在context.xml中的META-INF中实际添加一个上下文,并显示代码前。但是这里还有另一个问题!似乎添加路径标签会使tomcat发疯,如此处所述:http: //tomcat.apache.org/tomcat-7.0-doc/config/context.html

所以我真的在这里陷入困境......我想问的是:

  1. 在 Web 项目中实际添加外部文件夹以获取多媒体内容和
  2. 它应该如何让它在 Eclipse 中工作?

PS:我问这个是因为在我的项目中的一个方法中,我使用 getLoader 方法返回 InputStream(java.io InputStream NOT Corba)并且它返回空值(这意味着它没有找到它)。

编辑:试图通过手动插入conext来实际摆弄server.xml但没有用,插入相对URI在服务器上不起作用(本地:8080/Content/Image,里面有有效文件)或进入我的主要项目和 getstream 也不起作用

4

2 回答 2

2

经过一些摆弄、调整等。我想出了一个解决这种情况的方法。就像我说的那样,实际上可以让一个外部文件夹根据需要保存所有多媒体和/或页面。该解决方案的参考之一在这里:http ://harkiran-howtos.blogspot.pt/2009/08/map-external-directory-into-your.html 。

尽管如此,由于某种原因,这不太可能使其在 Eclipse 中工作(或者我失败了一些东西并且无法使其工作)。但是有一个替代解决方案。在 Web 应用程序内部但在 WEB-INF 和 META-INF 文件夹外部实际上有一个用于此目的的文件夹也是可行的。换句话说,一个位于 Web 应用程序根目录中的文件夹。要访问该文件夹中的这些文件,您可以使用称为 ServletContext 的东西。该上下文实际上包含对 Web 应用程序文件夹结构的所有可能引用。要使用给出的上下文访问这些文件,您必须使用 Servlet 上下文中的 getResourceAsStream(或在必要时使用 getRealPath 和/或您可以保证 Web 应用程序在 Tomcat 中展开)。所以换句话说,

PS:用于指出 ServletContext 的 Ty wds

于 2012-09-14T17:38:55.787 回答
0

我使 harkiran 的解决方案工作,但它不是很好的解决方案。

人们不鼓励使用 getRealPath。出于多种原因,映射外部文件夹是一件好事。

但要在 Eclipse 中执行此操作,您需要转到部署文件夹。就我而言,它是 Eclipse 工作区中的隐藏文件夹。

工作区/.metadata/.plugins/org.eclipse.wst.server.core/tmp0/

在该文件夹中,您应该从 harkiran 的解决方案中创建目录结构和文件。我一直在工作,直到您在 Eclipse 中删除并重新创建服务器。

之后,您需要再次制作它。

于 2015-03-21T16:46:06.893 回答