【问题标题】:Return an image from Jersey REST service to browser vs. use servlet将图像从 Jersey REST 服务返回到浏览器与使用 servlet
【发布时间】:2017-10-09 20:50:01
【问题描述】:

我很想知道将图像(*.jpg 或 *.gif)返回到客户端浏览器的最佳方式是什么:

  • 我想到的第一个想法是使用旧的 servlet。
  • 或者我也可以使用 JAX-RS (Jersy) 休息服务。

我需要为不同大小的图像创建一些方法,例如

  • 缩略图大小
  • 体积小
  • 正常尺寸
  • 原尺寸
  • 自定义尺寸

如果我使用 servlet,那么我可以为每个图像大小创建一个 servlet,并为自定义大小创建一个额外的 servlet,我可以将所需的 W 和 H 值作为 URL 参数发送到 servlet。

如果我使用 REST,我可以使用方法创建一个类,对于自定义大小,我可以使用路径参数。

但是性能呢? 哪种解决方案更好,为什么?

【问题讨论】:

  • 你可以继续休息了。其他来源的性能和使用也很好。

标签: java image servlets jersey jax-rs


【解决方案1】:

我认为这两种解决方案在性能方面是等效的。但是,恕我直言,JAX-RS 与 Servlet 不同,因为它是声明性的,而后者是程序性的。

我只会使用@QueryParam 而不是@PathParam 选择一个端点。正如我认为您在问题中所说的那样,图像的大小更像是它的属性而不是子资源。

使用这个解决方案(我已经实现过一次),您只有一种方法带有注释,使其非常易于阅读。例如:

@Path("images")
public interface ImageResource {
    enum Size {
        thumbnail, small, normal, original, custom
    }

    @GET
    @Path("/{id}")
    @Produces("image/jpeg")
    byte[] getImage(@PathParam("id") long id, @QueryParam("size") @DefaultValue("thumbnail") Size size, @QueryParam("width") Integer width, @QueryParam("height") Integer height);
}

然后如果size == Size.custom 检查宽度和高度都不为空。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-02-03
    • 2015-10-24
    • 1970-01-01
    • 1970-01-01
    • 2013-10-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多