2012-10-11 42 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上的圖像? –

相關問題