2012-02-24 51 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