帮助从Servlet到JSP页面获取图像

Chr*_*III 13 java jsp servlets image

我目前必须生成一个显示字符串文本的图像,我需要在Servlet上创建这个图像,然后以某种方式将图像传递给JSP页面,以便它可以显示它.我试图避免保存图像,而是以某种方式将图像流式传输到JSP.

我没有找到一种生成图像的方法,因为我开始寻找如何将图像从Servlet传递到JSP并且卡住了.

编辑:jsp页面已经制作,不是由servlet创建的,我必须将图像传递给已经存在的jsp

任何帮助表示赞赏.

Nic*_*olt 31

您需要将图像作为字节数组写入响应的输出流.像这样的东西:

byte[] imageBytes = getImageAsBytes();

response.setContentType("image/jpeg");
response.setContentLength(imageBytes.length);

response.getOutputStream().write(imageBytes);
Run Code Online (Sandbox Code Playgroud)

然后在JSP中,您只需使用标准img元素:

<img src="url to your servlet">
Run Code Online (Sandbox Code Playgroud)


Bri*_*new 7

不能1倍无论是在相同的响应的回报,因为你返回不同类型的(类型的HTML页面text/html和类型的形象image/jpeg,说的).

对于这种事情,我将在初始servlet请求期间生成图像(对于包含HTML页面).我将它存储在我的servlet的缓存中,并使用带有句柄的图像标记写入包含该图像的URL的HTML页面.

例如,浏览器要求 http://whatever/page

servlet生成图像,并在页面中写入HTML标记

<img src="http://whatever/image/unique_handle_to_image">
Run Code Online (Sandbox Code Playgroud)

浏览器将呈现HTML页面,并作为该问题的一部分向我的servlet发出带有图像句柄的新请求.

例如,浏览器现在要求 http://whatever/image/unique_handle_to_image

然后我将图像作为内容类型image/jpeg或类似内容返回.

所以你有两个请求正在进行中.一个用于页面,在其中渲染图像并临时存储,第二个用于返回图像.您必须记住清除图像缓存,但这一切都很简单.我不担心存储大量图像,因为来自浏览器的两个请求通常(!)快速连续.

  1. 我想如果您的浏览器支持它,可以使用数据uri,并创建类似的东西

    <img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAoAAAAKCAYAAACNMs+9AAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAALEwAACxMBAJqcGAAAAAd0SU1FB9YGARc5KB0XV+IAAAAddEVYdENvbW1lbnQAQ3JlYXRlZCB3aXRoIFRoZSBHSU1Q72QlbgAAAF1JREFUGNO9zL0NglAAxPEfdLTs4BZM4DIO4C7OwQg2JoQ9LE1exdlYvBBeZ7jqch9//q1uH4TLzw4d6+ErXMMcXuHWxId3KOETnnXXV6MJpcq2MLaI97CER3N0vr4MkhoXe0rZigAAAABJRU5ErkJggg==" alt="Red dot" />
    
    Run Code Online (Sandbox Code Playgroud)

请注意,围绕这些有一些警告.查看链接页面.