2012-02-24 52 views
1

這裏是我的代碼:通過java代碼呈現圖像或從靜態路徑讀取圖像?

1.Java代碼:

public static void getImg(Long itemId) { 
    try { 
    Item item = Item.findById(itemId); 
    if (item.img != null && item.img.getFile() != null{ 
     response.setContentTypeIfNotSet(item.img.type()); 
     renderBinary(item.img.get()); 
    } 
    } catch (Exception e) { 
    Logger.error("Can't find image,itemId = " + itemId); 
    } 
} 

html : < img src="@{{ Items.getImage(123)}}"/> 

2.

html : < img src="/public/images/123.jpg"/> 

我使用playframework,並通過第一個版本從文檔顯示圖像樣本。他們之間有什麼不同(深入機制),特別是在迴應表現方面?

回答

1

在第一個版本中,由於您從一些業務邏輯(和/或數據庫)中獲得實際文件名,因此您可以輕鬆地重命名/替換id爲'123'的圖像,而無需更改表示層。

如果id爲'123'的圖像位於受保護的文件夾(HTTP基本認證或類似文件)中,則您的業務邏輯可以確保通過應用程序範圍的安全機制授予訪問權限。

通過根據其他請求/會話參數和邏輯提供所需版本的路徑,您也可以對映像進行版本控制。

在第二種情況下,可以執行上述方案,但在開發時間和可能的配置方面成本更高。

+0

如果忽略安全和名稱更改情況,第二個版本是否具有更好的響應性能,爲什麼? – MrROY 2012-02-24 03:42:39

+1

是的,如果您不需要任何預處理,第二個效率更高,因爲它不會觸及應用程序服務器,只有Web服務器(根據您的配置) – JScoobyCed 2012-02-24 04:39:51