【问题标题】:How to display a default image when image source is a servlet?当图像源是 servlet 时如何显示默认图像?
【发布时间】:2023-03-06 09:06:01
【问题描述】:

在我的 JSP/Servlet 设置中,为了显示用户配置文件图像,我通过在 src 标记中指定 servlet URL 然后从 servlet 响应返回图像来指示 img 标记从 servlet 获取图像。

Sevlet 在收到图像请求后会执行以下操作,

  1. 从数据库中获取BLOB格式的图片
  2. byte[] 和
  3. 准备图像
  4. response 对象中返回带有适当标题的图像。

我的问题是因为注册页面没有图片上传选项,所以新用户在数据库中没有他们的图片,即BLOBNULL如何为所有此类用户显示默认图像?

编辑 根据收到的 cmets,我只想指出这一点。我知道我们在数据库中设置默认值(在创建用户时)或在数据库中有 NULL 时返回默认图像数组的解决方案。 我已经在使用后一种情况了。通过这个问题,我只想讨论任何其他可能的解决方案

【问题讨论】:

  • 您是否尝试过在数据库中为“新用户”创建和存储默认图像?
  • 这听起来合乎逻辑,但我认为它们也应该是其他解决方案,而不是使用大量默认图像加载数据库。
  • 您可以尝试通过多种方式进行此操作,例如您可以尝试下载用户定义的图片,如果它为空则您正在下载默认图片;)
  • 在 EAR/WAR 中保存默认用户图片,如果数据库返回 NULL,则返回该默认用户图片作为响应。
  • @Amit,我并不是说你应该上传“很多”默认图像,只需要 1 个。然后,您可以创建一个SELECT 语句,如果用户当前值为空,则返回用户图像或默认图像。查找 SQL 命令ISNULL。如果语句创建正确,这也适用于未注册用户。

标签: java html image jsp servlets


【解决方案1】:

当用户没有图像时,一个选项可能是返回 HTTP 错误 404“未找到”。对我来说这似乎很合乎逻辑,因为确实没有用户的图像。

public void doGet(HttpServletRequest request, HttpServletResponse response) {
    response.sendError(HttpServletResponse.SC_NOT_FOUND);
}

然后在您的 HTML 中,您可以使用 onerror Event 设置默认图像来处理这种情况:

<img src="servletUrl" onerror="this.src='default.png'" width="150" height="150" />

这样,servlet 只发送用户图像,如果用户没有图像,则不执行任何特殊逻辑。

【讨论】:

  • 谢谢@Tobias.. 这正是我要找的。在接受您的答案之前,将再给您一天的时间来提问。可能有人想出了更好的解决方案。
猜你喜欢
  • 2013-02-02
  • 2019-06-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-11-24
  • 2011-05-28
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多