将虚拟文件夹添加到web动态项目



现在我正试图在Eclipse Juno和Tomcat7上完成一个项目,该项目需要一个"虚拟文件夹"来保存多媒体文件(如图像、其他子页面等)。)。我已经有一些方法以基于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中添加一个上下文,代码如前所示。但这里还有另一个问题!添加path标签似乎会让tomcat发疯,正如这里所说:http://tomcat.apache.org/tomcat-7.0-doc/config/context.html。

所以我在这里真的很为难。。。。我想问的是:

  1. 在web项目中实际添加外部文件夹以获取多媒体内容的最佳方式是什么
  2. 它应该如何在Eclipse中工作

PS:我之所以这么问,是因为在我项目中的一个方法中,我使用getLoader方法返回InputStream(java.io InputStream NOT Corba),它返回null(这意味着它找不到它)。

编辑:试图手动插入conext,但没有成功,插入相对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应用程序的ROOT中的文件夹。要访问该文件夹中的这些文件,可以使用名为ServletContext的东西。该上下文实际上包含了对web应用程序文件夹结构的所有可能引用。要使用context give访问这些文件,您必须使用Servlet上下文中的getResourceAsStream(或者,如果必要和/或您可以保证web应用程序在Tomcat中分解,则使用getRealPath)。换句话说,要访问web应用程序内部但web-INF和META-INF之外的文件夹,必须使用ServletContext及其给定的方法来获取文件/流。

PS:指出Servlet上下文的单词

我让harkiran的解决方案起作用,但它不是很好的解决方案。

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

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

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

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

在那之后,你需要再次成功。

最新更新