【问题标题】:How can I display image in JSP?如何在 JSP 中显示图像?
【发布时间】:2012-06-28 09:26:00
【问题描述】:

我正在尝试在用户个人页面 (JSP) 上显示存储在数据库中的用户头像,这就是我所做的

1- 我有一个 servlet 处理登录请求并生成用户 Bean 对象。 (用户头像作为字节数组,它可能会在不同的页面和位置多次出现,这就是为什么我更喜欢会话属性而不是每次都从数据库中读取它们)

2- 用户 bean 作为属性存储在会话中。

3- 我想要另一个 JSP 或 Servlet 随时将此字节数组头像显示为图像。

4- 我也希望这个 Servlet 可以用于其他图标图像,这就是为什么我认为它不能依赖会话属性来传递字节数组? (我不太确定)

所以有什么设计可以实现我想要的吗?还是我应该简单地使用会话属性来传递数据?

谢谢

【问题讨论】:

    标签: jsp jakarta-ee servlets jstl el


    【解决方案1】:

    如何在 JSP 中显示图片?

    使用 HTML <img> 元素。


    有什么设计可以实现我想要的吗?

    您可以为此创建一个独立的 servlet。 doGet() 方法中只有 2 或 3 行代码。诚然,这个 servlet 并不能真正用于直接从数据库中流式传输图像,但您可以创建另一个。恕我直言,这不是主要问题。


    还是我应该简单地使用会话属性来传递数据?

    只有当它真正代表会话范围的数据并且您基于性能测量确认将用户的头像保持在会话中比每次从数据库中流式传输时更快。请记住,会话范围内的任何数据都会累积服务器的内存,因此请确保这些图像不超过特定的文件大小。

    【讨论】:

      【解决方案2】:

      如果头像不是什么非常秘密的东西,我会创建一个 servlet,它接受一个用户 ID 参数并从数据库中获取图像数据。嵌入看起来像:

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

      这将解决几乎所有问题,除了性能问题。您有两个选择,而不是在会话中传递图像数据(baaaaaad 想法):

      1. 在您的 servlet 中添加 expires/cache 标头,以便浏览器进行缓存。
      2. 由于您的 servlet 将是无状态的,因此它是方法缓存的理想选择。见http://ehcache.org/documentation/recipes/spring-annotations

      【讨论】:

        猜你喜欢
        • 2017-06-28
        • 2014-05-20
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-10-29
        • 2013-08-02
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多