2011-03-10 126 views
0

在Struts2中,可以通過將靜態內容放入資源/靜態中來提供靜態內容,如圖像,JS或CSS文件。從這一點來說,Struts2負責在HTTP請求中提供服務,並且每個人(尤其是我的JSP)都很高興。如何在Struts2中動態地提供靜態內容

現在我必須從數據庫中檢索所有這些靜態文件;我把它們當作byte[]。目的是在不重新部署Web應用程序的情況下交換文件。

你有什麼建議如何優雅地爲他們服務? 我可以覆蓋例如一些靜態資源提供者?或者,我應該爲此提供一個操作嗎? 我主要關心緩存。還有什麼我應該關心的嗎?

在此先感謝,任何暗示讚賞! :)

格雷戈爾

回答

0

創建一個動作從數據庫中獲取數據,然後使用stream結果類型。 stream結果將自動處理爲響應設置適當的緩存標頭(默認情況下打開緩存)。您需要提供內容類型和InputStream

有關詳細信息,請查看Javadoc的StreamResult

+0

那麼,流結果是一個好的開始,但我沒有得到它默認情況下有關緩存的工作。它從未發送過304響應。必須檢查請求中的「If-Modified-Since」標題,並在響應中設置「Expires」,「Last-Modified」和「Retry-After」標題。當客戶端的緩存仍然是最新的時候,我發送一個httpheader(304)結果而不是流結果。這樣一切順利! – grefab 2011-03-17 13:01:26