Java 当图像源是servlet时如何显示默认图像?
在我的JSP/Servlet设置中,为了显示用户配置文件图像,我通过在Java 当图像源是servlet时如何显示默认图像?,java,html,image,jsp,servlets,Java,Html,Image,Jsp,Servlets,在我的JSP/Servlet设置中,为了显示用户配置文件图像,我通过在src标记中指定Servlet URL,然后从Servlet返回图像来指示img标记从Servlet获取图像 Sevlet在收到图像请求时执行以下操作 它以BLOB格式从数据库获取图像 从字节准备图像[]和 返回response对象中具有适当标题的图像 我的问题是因为注册页面没有图像上传选项,所以新用户的图像不在数据库中,即BLOB为NULL如何为所有此类用户显示默认图像? 编辑 根据收到的评论,我只想指出这一点。我知道我们在
src
标记中指定Servlet URL,然后从Servlet返回图像来指示img
标记从Servlet获取图像
Sevlet在收到图像请求时执行以下操作
BLOB
格式从数据库获取图像字节准备图像
[]和response
对象中具有适当标题的图像BLOB
为NULL
如何为所有此类用户显示默认图像?
编辑
根据收到的评论,我只想指出这一点。我知道我们在数据库中设置默认值(创建用户时)或在数据库中有空时返回默认图像数组的解决方案我已经在使用后一种情况。通过这个问题,我只想讨论任何其他可能的解决方案一个选项是在用户没有图像时返回HTTP错误404“未找到”。对我来说,这似乎很合乎逻辑,因为用户实际上没有图像
public void doGet(HttpServletRequest request, HttpServletResponse response) {
response.sendError(HttpServletResponse.SC_NOT_FOUND);
}
然后,在HTML中,您可以使用设置默认图像来处理这种情况:
<img src="servletUrl" onerror="this.src='default.png'" width="150" height="150" />
通过这种方式,servlet只发送用户图像,如果用户没有图像,则不执行任何特殊逻辑。您是否尝试过在数据库中为“新用户”创建并存储默认图像?这听起来很合理,但我认为他们的解决方案也应该是其他解决方案,您可以通过多种方式尝试这样做,例如,您可以尝试下载用户定义的图片,如果为空,则您正在下载默认图片;)在EAR/WAR中保存默认用户图片,如果数据库返回NULL,则返回该默认用户图片作为响应。@Amit,我不是说你应该上传“很多”默认图片,只需要1个。然后,您可以创建一个
SELECT
语句,如果用户当前值为空,则返回用户图像或默认图像。查找SQL命令ISNULL
。如果语句创建正确,这也适用于未注册用户。谢谢@Tobias。。这正是我要找的。在接受你的回答之前,我会再给你一天时间提问。也许有人会想出更好的解决办法。