一尘不染

当图像源是servlet时如何显示默认图像?

jsp

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

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

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

我的问题是,由于“注册”页面没有图像上传选项,因此新用户的数据库中没有图像,即BLOBis NULL如何为所有此类用户显示默认图像?

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


阅读 201

收藏
2020-06-10

共1个答案

一尘不染

一种选择是在用户没有图像时返回HTTP错误404“未找到”。对我来说,这很合逻辑,因为用户确实没有图像。

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

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

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

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

2020-06-10