如何在JSP中显示图像?

时间:2012-06-27 00:42:52

标签: jsp java-ee servlets jstl el

我正在尝试在用户个人页面(JSP)上显示存储在DB中的用户头像这里是我做的事情

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

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

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

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

所以有任何设计可以实现我想要的吗?或者我应该只使用会话属性传递数据?

由于

2 个答案:

答案 0 :(得分:2)

  

如何在JSP中显示图像?

使用HTML <img>元素。


  

有没有任何设计可以达到我的目的?

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


  

或者我应该只使用会话属性来传递数据?

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

答案 1 :(得分:0)

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

  

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

除了性能问题之外,这几乎可以解决所有问题。不是在会话中传递图像数据(baaaaaad idea),而是有两种选择:

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