gpt4 book ai didi

java - 将虚拟文件夹添加到 Web 动态项目

转载 作者:行者123 更新时间:2023-11-30 09:33:00 25 4
gpt4 key购买 nike

现在我正在尝试在 Eclipse Juno 和 Tomcat 7 上完成一个项目,该项目需要一个“虚拟文件夹”来保存多媒体文件(如图像、其他子页面等)。我已经有一些方法可以在基于 URI 的语法中给出文件路径(假设我想访问/Content/Image 中的图像)并且我想将该 URI 映射到 C:\Users\MyUser\Content\image(我我知道我正在将项目绑定(bind)到 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 在服务器上不起作用(local:8080/Content/Image,其中包含有效文件)或进入我的主要项目并执行 getstream 也不起作用

最佳答案

经过一些摆弄、调整等,我想出了一个解决这种情况的方法。就像我说的那样,实际上可以有一个外部文件夹来存放您想要的所有多媒体和/或页面。该解决方案的引用之一在这里: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 中展开)。因此换句话说,要访问 Web 应用程序内部但 WEB-INF 和 META-INF 之外的文件夹,您必须使用 ServletContext 及其给定的方法来获取文件/流。

PS: Ty wds 用于指出 ServletContext

关于java - 将虚拟文件夹添加到 Web 动态项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12379898/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com