Http 在jsf web应用程序上实时显示生成的图像。

Http 在jsf web应用程序上实时显示生成的图像。,http,jsf,servlets,Http,Jsf,Servlets,我有一个web应用程序(JSF2.0),可以显示一些图像 我读入线程并实现了一个图像servlet来向客户端发送图像。 问题是,我没有在硬盘上使用数据库或固定位置,只是一个返回字节[]的支持java方法(在讨论中,假设它是动态生成的) 我想知道这个问题是否有一个“标准”解决方案,即如何在网页上显示动态生成的图像 更新 我最终决定使用RichFacesMediaOutput组件。 在我看来,标记为正确的答案在大多数情况下更健壮、更好。将字节[]代码生成逻辑从支持bean移动到图像servlet。支

我有一个web应用程序(JSF2.0),可以显示一些图像

我读入线程并实现了一个图像servlet来向客户端发送图像。 问题是,我没有在硬盘上使用数据库或固定位置,只是一个返回字节[]的支持java方法(在讨论中,假设它是动态生成的)

我想知道这个问题是否有一个“标准”解决方案,即如何在网页上显示动态生成的图像

更新 我最终决定使用
RichFaces
MediaOutput
组件。
在我看来,标记为正确的答案在大多数情况下更健壮、更好。

字节[]
代码生成逻辑从支持bean移动到图像servlet。支持bean用来生成
字节[]
的所有基本参数都应该作为请求参数传递给图像servlet。例如

<img src="imageservlet?param1=#{bean.param1}&param2=#{bean.param2}" />


如果出于某种原因,这真的不是一个选项,那么最好的办法是让支持bean将这些映像临时存储在临时磁盘或会话上,然后将其标识符作为请求参数传递给servlet,以便servlet能够找到它并将其写入响应体。

映像的字节是否来自数据库、文件,记忆或其他任何地方都不重要。浏览器只需要字节和内容类型。您到底面临什么问题?@JB获取
以显示由支持bean方法返回的
字节[]
中的图像。您可以为生成的图像生成唯一的ID(计数器就足够了),将图像存储在映射中,并按此键索引,并将此id作为URL的一个参数放入h:graphicImage中使用的图像servlet。然后servlet将使用键从映射中获取图像,并为image.Tnx提供服务。我希望我考虑过:-)(图像生成逻辑复制)最终我决定使用
richfaces
mediaOutput
组件,因为我发现它太复杂,无法重新生成图像。啊,是的,这也是一个选项。我没想过。它基本上将字节流临时存储在会话中,并使用资源解析器将其流回。我相信PrimeFaces也能做到这一点。