2012-10-11 40 views
1

我从硬盘上传图像,然后将其存储在我的应用程序的某个文件夹中。
但是,图像不会立即显示在我的JSP上,只有在重新启动应用程序后才会显示。
我想这是因为当应用程序资源加载时,目标文件夹中还不存在所需的图像文件。
因此,我认为将图像文件存储到目标文件夹后立即重新加载应用程序资源programmaticaly将解决我的问题,但我不知道如何去做。
在Java Web应用程序中重新加载资源

更新1:JSP 部分是图像被问:

<img src="${pageContext.servletContext.contextPath}/img/${imageUrl}" /> 

其中IMAGEURL是与它的图像文件名的扩展名。

的图像存储在MyProject的/ src目录/主/ web应用/ IMG/

谁能帮助我?
在此先感谢。

+0

你在哪里上传或在你的应用程序中获取图像? –

+0

我将图像存储在WEB-INF文件夹附近的“webapps/img”中。 –

+0

您可以添加如何在jsp中显示图片的代码片段吗? –

回答

1

我明白了..谢谢。

这里是发生了什么(恕我直言:)):

的JSP在加工过程中的变量被解析成一些静态的路径和被传递到浏览器。

浏览这里呈现的静态内容,一旦它看到路径它会发出额外的HTTP请求到服务器,但它似乎是你的服务器无法找到静态图像。 这是因为你的不能一旦部署就改变战争的物理结构。 就像您使用WAR的基于文件的表示一样工作,而不是使用分解目录。

现在你可以做什么?

尝试创建一个资源的servlet,将获得使二值图像的请求,将其返回。

注册这个servlet与公司,比如,/资源路径你的web.xml文件,并使其得到GET参数imgName

<img src="resource?imageName=${imageNameYouWant}" />

在JSP而不是静态内容img src标记以图像作为参数调用servlet。 当浏览器看到它时,它会像以前一样发出一个常规请求,但是这次它会被您的资源servlet处理,并且会带来图像。

我想尝试的另一件事就是将图像文件夹移到webapp目录之外。 此目录会被您的网络容器自动跟踪,但是没有理由在此存储图像。

你这样做:

  1. 创建类似于目录:/ MYAPP /图像

  2. 您仍然需要建立在服务器端的某个组件。但是这次可以通过在Web服务器端创建一些配置来完成(没有自定义的servlet)。 当我使用第一种方法时,我不确定这会起作用...

  3. 在JSP中,我已经在上面解释过了。

据其企业重要的应用程序,我会建议结合第一种方式与存储在数据库中的图像,但它是一个不同的故事:)

希望这有助于

+0

那么,你能否提出一个替代方案,我应该在哪里放置图像,然后如何才能访问它们? –

+0

我已经扩展了我的答案,这有帮助吗? –

+0

我要立即尝试第二种方法。你能否澄清一下,如果我将“webapp”之外的“img”文件夹替换为“d:/ img /”,那么我应该如何访问JSP上的图像? –

相关问题