Java 帮助从Servlet获取图像到JSP页面
我目前必须生成一个显示字符串文本的图像,我需要在Servlet上生成该图像,然后以某种方式将该图像传递给JSP页面,以便它能够显示它。我试图避免保存图像,而是以某种方式将图像流式传输到JSP 自从我开始寻找如何将一个图像从Servlet传递到JSP adn以来,我还没有找到生成图像的方法 编辑: jsp页面已经生成,并且不是由servlet创建的,我必须将图像传递到已经存在的jsp中Java 帮助从Servlet获取图像到JSP页面,java,image,jsp,servlets,Java,Image,Jsp,Servlets,我目前必须生成一个显示字符串文本的图像,我需要在Servlet上生成该图像,然后以某种方式将该图像传递给JSP页面,以便它能够显示它。我试图避免保存图像,而是以某种方式将图像流式传输到JSP 自从我开始寻找如何将一个图像从Servlet传递到JSP adn以来,我还没有找到生成图像的方法 编辑: jsp页面已经生成,并且不是由servlet创建的,我必须将图像传递到已经存在的jsp中 非常感谢您的帮助。如果我正确理解了您的问题,事件顺序如下: 生成一个HTML页面 HTML页面被发送到客户端;及
非常感谢您的帮助。如果我正确理解了您的问题,事件顺序如下:
<a href="http://myhost.com/image_servlet?id=1234"/>
您并没有真正说明文本是什么,或者生成图像需要什么信息。如果无法将其封装在GET URL中,则可能需要添加额外的信息并将其放入HttpSession中,以便在下一个GET映像请求中检索该信息。您需要将映像作为字节数组写入响应的输出流。大概是这样的:
byte[] imageBytes = getImageAsBytes();
response.setContentType("image/jpeg");
response.setContentLength(imageBytes.length);
response.getOutputStream().write(imageBytes);
然后在JSP中,只需使用标准的img
元素:
<img src="url to your servlet">
您不能在同一响应中同时返回这两种类型,因为您返回的是不同的类型(例如,类型为text/HTML
的HTML页面和类型为image/jpeg
的图像)
对于这种情况,我将在初始servlet请求期间生成图像(对于包含HTML页面)。我将其存储在servlet中的缓存中,并使用图像标记编写HTML页面,图像标记包含指向该图像的URL和句柄
e、 g.浏览器要求http://whatever/page
servlet生成图像,并在页面中写入HTML标记,如
<img src="http://whatever/image/unique_handle_to_image">
请注意,围绕这些问题有许多注意事项。请参阅链接页面。我会按照以下思路做一些事情来实现这一点: 在JSP页面上,您放置了一个指向图像的链接: <img src="servlet/path?word=value">the rest</img> 其余的 这个链接指向您的servlet,它使用请求参数生成图像,您不需要保存它,只需将其直接放入响应的输出流中即可。您必须记住禁用此servlet的浏览器缓存 首先显示JSP页面,然后请求所有图像,它应该可以正常工作 当然,您不应该将要显示的文本放入这样的参数中,您应该以某种方式对其进行加密或将其存储在HTTP会话中
希望这能有所帮助。我在jsp页面中会有什么代码显示图像
...
response.setContentType("image/jpeg");
response.setContentLength(imageBytes.length); // imageBytes - image in bytes
response.getOutputStream().write(imageBytes);//
outStream.flush();
outStream.close();
...
response.setContentType("image/jpeg");
response.setContentLength(imageBytes.length); // imageBytes - image in bytes
response.getOutputStream().write(imageBytes);//
outStream.flush();
outStream.close();