Java 验证码图像返回二进制数据?如何显示这个?

Java 验证码图像返回二进制数据?如何显示这个?,java,javascript,binary,captcha,binary-data,Java,Javascript,Binary,Captcha,Binary Data,我正在从基于Java的包“SimpleCaptcha”中检索验证码图像 在前端,我只需在我的页面中添加以下内容,即可获得验证码图像: <img src="stickyImg" /> 这将获得图像,但输出如下内容(明显缩短): 在我看来,这就像是原始的二进制数据如何使其工作?您不能使用该方法加载图像,您需要将图像url属性设置为图像生成器的路径 $('#stickImg').attr('src', 'path/to/image/generator'); 图像标记的src属性向浏

我正在从基于Java的包“SimpleCaptcha”中检索验证码图像

在前端,我只需在我的页面中添加以下内容,即可获得验证码图像:

<img src="stickyImg" />
这将获得图像,但输出如下内容(明显缩短):



在我看来,这就像是原始的二进制数据如何使其工作?

您不能使用该方法加载图像,您需要将图像url属性设置为图像生成器的路径

$('#stickImg').attr('src', 'path/to/image/generator');

图像标记的
src
属性向浏览器指定要加载图像的位置,而不是图像的内容。所以你把图像的内容塞进你想要的位置,这给了你垃圾,因为这根本没有意义

因此,要重新加载图像,您需要告诉浏览器图像的地址已更改。仅仅将图像的
src
属性中的位置重写为相同的地址是不够的——这不会告诉浏览器更改任何内容。您可以通过在查询字符串中填充一些随机数据来克服这一问题,比如请求的时间。正如@mikerobi所建议的,您可以在这里重写
src
标记,修改后在查询字符串中添加时间戳(您的servlet几乎肯定会忽略):


我不知道有多少浏览器支持它,但可以对图像进行base64编码,在图像前面加上(取决于图像格式)“data:image/png;base64”,并将其用作图像的URI。

好的,在html中使用(就像那样)加载图像。所以我想,要重新加载它,我应该使用加载方法(在我的示例中)获取相同的东西,“stickyImg”。我对java一无所知,那么我如何找到图像生成器的路径呢?更让我困惑的是,为什么当页面加载时可以工作,而当我调用它时却不能像在加载方法中那样工作呢?原谅我,我是一个在我的生活中从未接触过java的前端人。这是不够的,如果路径没有改变,你需要在URL上添加一些额外的东西。太棒了!我不知道。这是完美的工作,虽然它是接近魔术对我来说。谢谢你解释这背后的“原因”。
<img src="captcha image�PNG �ݚ��L�23U�݆�}$�J����Dy����IEND�B`� ">
$('#stickImg').attr('src', 'path/to/image/generator');
$('#stickyImg').attr('src', 'stickyImg?' + (new Date().getTime()));