帮助将映像从 Servlet 获取到 JSP 页面
我目前必须生成一个显示字符串文本的图像,我需要在Servlet上制作此图像,然后以某种方式将图像传递到JSP页面,以便它可以显示它。我试图避免保存图像,而是以某种方式将图像流式传输到JSP。
自从我开始寻找如何将图像从Servlet传递到JSP并卡住以来,我还没有找到生成图像的方法。
编辑:jsp页面已经制作完成,不是由servlet创建的,我必须将图像传递到已经存在的jsp中
任何帮助是值得赞赏的。
我目前必须生成一个显示字符串文本的图像,我需要在Servlet上制作此图像,然后以某种方式将图像传递到JSP页面,以便它可以显示它。我试图避免保存图像,而是以某种方式将图像流式传输到JSP。
自从我开始寻找如何将图像从Servlet传递到JSP并卡住以来,我还没有找到生成图像的方法。
编辑:jsp页面已经制作完成,不是由servlet创建的,我必须将图像传递到已经存在的jsp中
任何帮助是值得赞赏的。
您需要将图像作为字节数组写入响应的输出流。像这样:
byte[] imageBytes = getImageAsBytes();
response.setContentType("image/jpeg");
response.setContentLength(imageBytes.length);
response.getOutputStream().write(imageBytes);
然后在JSP中,你只使用一个标准元素:img
<img src="url to your servlet">
您不能在同一响应中同时返回两者,因为您返回的是不同的类型(例如,类型的 HTML 页面和类型的图像)。text/html
image/jpeg
对于这类事情,我将在初始servlet请求期间生成图像(对于包含HTML页面)。我将其存储在 servlet 的缓存中,然后编写带有图像标记的 HTML 页面,其中包含带有句柄的该图像的 URL。
例如,浏览器要求http://whatever/page
servlet 生成图像,并在页面中写入一个 HTML 标记,如下所示
<img src="http://whatever/image/unique_handle_to_image">
浏览器将呈现 HTML 页面,并作为其中的一部分,向我的 servlet 发出带有图像句柄的新请求。
例如,浏览器现在要求http://whatever/image/unique_handle_to_image
然后,我将图像作为内容类型或类似内容返回。image/jpeg
所以你有两个请求正在进行中。一个用于呈现图像并临时存储图像的页面,另一个用于返回图像。您必须记住清除图像缓存,但这一切都很简单。我不会担心存储大量图像,因为来自浏览器的两个请求通常(!)会快速连续出现。
我想只要您的浏览器支持,就可以使用data uri,并创建类似的东西
<img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAoAAAAKCAYAAACNMs+9AAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAALEwAACxMBAJqcGAAAAAd0SU1FB9YGARc5KB0XV+IAAAAddEVYdENvbW1lbnQAQ3JlYXRlZCB3aXRoIFRoZSBHSU1Q72QlbgAAAF1JREFUGNO9zL0NglAAxPEfdLTs4BZM4DIO4C7OwQg2JoQ9LE1exdlYvBBeZ7jqch9//q1uH4TLzw4d6+ErXMMcXuHWxId3KOETnnXXV6MJpcq2MLaI97CER3N0vr4MkhoXe0rZigAAAABJRU5ErkJggg==" alt="Red dot" />
请注意,围绕这些有许多警告。请参阅链接的页面。