【发布时间】:2012-09-04 23:38:08
【问题描述】:
现在我正在尝试在 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。
所以我真的陷入了困境......我想问的是:
- 在 Web 项目中实际添加外部文件夹以获取多媒体内容和
- 它应该如何在 Eclipse 中工作?
PS:我问这个是因为在我的项目中的一个方法中,我使用 getLoader 方法返回 InputStream(java.io InputStream NOT Corba),它返回空值(这意味着它没有找到它)。
编辑:试图通过手动插入conext来实际摆弄server.xml但没有奏效,插入相对URI在服务器上不起作用(本地:8080/Content/Image内部有有效文件)或进入我的主要项目并做 getstream 也不起作用
【问题讨论】:
-
如果您需要以编程方式获取内容,对我来说将其存储在 WEB-INF 文件夹中似乎更合乎逻辑。
-
确实如此,但我仍然在某处读到,将内容存储在 WEB-INF 上并不是一个好方法,因为这需要 tomcat 来爆炸 webapp,而且这不是很可靠。在我意识到的测试中,试图访问 WEB-INF 上的东西,由于某种原因我无法检索 JPG 文件(但我可以检索 .properties 文件......)
-
非常感谢您分享了这个问题!似乎那个 classLoader 无法检索 WEB-INF 之外的文件,这可能是造成这种混乱的原因......我今天将处理这个问题,如果我能找到解决方案,我将发布一个详细的问题/解决方案帖子来描述它
标签: java eclipse tomcat contextpath