2012-06-27 97 views
0

我試圖顯示在用戶個人頁面(JSP)中存儲在數據庫中的用戶頭像這裏是我所做的如何在JSP中顯示圖像?

1-我有一個servlet處理登錄請求併產生User Bean對象。 (用戶頭像作爲字節數組,它可能在不同的頁面和位置出現多次,這就是爲什麼我更喜歡會話屬性而不是每次從數據庫讀取它們的原因)

2-用戶bean存儲在會話中作爲屬性。

3-我想要另一個JSP或Servlet隨時將這個字節數組頭像顯示爲圖像。

4-我也希望這個Servlet可以重複使用其他圖標圖像,這就是爲什麼我認爲它不能依賴會話屬性來傳遞字節數組? (我對此不太確定)

so有什麼設計可以實現我想要的嗎?或者我應該簡單地使用會話屬性來傳遞數據?

感謝

回答

2

我怎樣才能在JSP中顯示圖像?

使用HTML <img>元素。


有任何設計來實現我想要什麼?

您可以爲此創建一個獨立的servlet。在doGet()方法中只有2或3行代碼。誠然,這個servlet實際上不可用於直接從數據庫流式傳輸圖像,但您可以創建另一個。這不是恕我直言的主要問題。


或者我應該簡單地使用會話屬性是傳遞數據?

只有當它真正代表sessionwide數據和你基於性能測量證實,保持用戶的化身的會話是從DB每次流更快。請記住,會話範圍中的任何數據都會累積服務器的內存,因此請確保這些圖像不超過特定的文件大小。

0

如果頭像不是一些非常祕密的東西,我會創建一個servlet,它接受一個userid參數並從數據庫中獲取圖像數據。嵌入會是什麼樣子:

<img src="/avatarservlet?userid=XXX"/>

,將解決幾乎所有的東西,除了性能問題。而不是在會話中傳遞圖像數據(baaaaaad idea),您有兩種選擇:

  1. 在servlet中添加過期/緩存標頭,因此瀏覽器將執行緩存。
  2. 由於您的servlet將是無狀態的,因此它是方法緩存的理想選擇。見http://ehcache.org/documentation/recipes/spring-annotations