通过java代码渲染图像或从静态路径读取图像?

时间:2012-02-24 03:04:06

标签: java image-processing playframework webserver httprequest

这是我的代码:

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 个答案:

答案 0 :(得分:1)

在第一个版本中,由于您从某些业务逻辑(和/或数据库)获得实际文件名,因此您可以轻松地重命名/替换id为“123”的图像,而无需更改表示层。

如果id'123'的图像位于受保护的文件夹(HTTP基本身份验证或类似文件)中,您的业务逻辑可以确保通过应用程序范围的安全机制授予访问权限。

您还可以根据其他请求/会话参数和逻辑提供所需版本的路径,对图像进行版本控制。

在第二种情况下,可以执行上述方案,但开发时间和可能的配置成本更高。