Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 生成图像并将其与其他内容一起显示在JSP中_Java_Spring_Jsp_Struts_Jfreechart - Fatal编程技术网

Java 生成图像并将其与其他内容一起显示在JSP中

Java 生成图像并将其与其他内容一起显示在JSP中,java,spring,jsp,struts,jfreechart,Java,Spring,Jsp,Struts,Jfreechart,我使用JFreeChart根据用户输入生成动态图表。我有一个带有文本框和组合框的JSP,用户输入并提交它,动作处理它,生成图表的图像。我需要在与以前相同的JSP上,在textbox/combobox下面显示此图像 如果我使用response.setContentType(“image/jpeg”)等。。。然后我得到一个单独的图像页面。我曾想过将图像保存到一个文件中,然后使用访问它,但我不确定这是否可行(是否需要将其保存到WebContent,我可能无法始终访问它?) 是否有一种方法可以以某种方式

我使用JFreeChart根据用户输入生成动态图表。我有一个带有文本框和组合框的JSP,用户输入并提交它,动作处理它,生成图表的图像。我需要在与以前相同的JSP上,在textbox/combobox下面显示此图像

如果我使用
response.setContentType(“image/jpeg”)等。。。然后我得到一个单独的图像页面。我曾想过将图像保存到一个文件中,然后使用
访问它,但我不确定这是否可行(是否需要将其保存到WebContent,我可能无法始终访问它?)

是否有一种方法可以以某种方式缓存图像,然后通过
或其他方式在JSP内部访问它?也许JFreeChart有一个简单的方法来做我想做的事

如果有必要的话,我还在我的webapp上使用struts和spring


提前感谢。

如果您在服务器端生成映像,您总是可以将其存储在一个临时目录中,使用类似于的方法为其生成一个唯一的名称,并在其末尾连接映像文件扩展名

确保生成图像的目录在Web服务器上是可访问的,然后使用ajax()将服务器上图像文件的URL路径发送回JSP,以便使用Javascript显示


只需确保您还有一个chron作业或服务,可以不时地从目录中清除较旧的文件。

您应该有一个servlet,可以仅从URL创建所需的图像。URL可以包含一个id,该id映射回程序中包含内存中原始数据的对象。然后servlet生成图像并返回它

然后,您可以简单地在Javascript中设置当前网页中图像的url,并加载它


这是因为JSP是面向字符的,它不适合二进制数据,所以您需要一个servlet来实现它。

我没有尝试过,但您可以从中寻找合适的URL生成器。图中给出了实现
PieURLGenerator
的概要。

请注意,在web应用程序中访问文件系统会使您依赖于供应商。@Thorbjørnravandersen这一点很好!在编写Java WebApp时,将自己绑定到特定的操作系统是个坏主意。当你说临时目录时,你是指我的WebContent中的目录?或者文件系统上的任何其他目录?我需要确保我可以独立于操作系统访问该文件,等等。UUID不是必需的,我可以每次都覆盖该文件,但我需要确保我可以始终从JSP访问它。如何获取我的WebContent文件夹的真实路径?servlet API不能保证WebContent文件夹存在。@leeand00我正在尝试这两个选项。我正在开发的应用程序只用于需要显示一些报告的univerity项目,我只需要将其显示给我的教授,在本地部署,只有一个用户可以访问它。我正在使用java/webapps而不是基于windows的应用程序,因为这是我所知道的。虽然我会尝试实现Thorbjørn的解决方案,但我仍然不完全理解它。谢谢你们。对不起,我不太明白。你是说我需要两个服务员?一个用来处理用户的输入,另一个用来生成图像的URL?图像是根据用户输入创建的,如果我需要在
中使用另一个servlet,如何访问我以前创建的图像?对不起,如果我理解错了,不。只是生成图像的一个。您的会话可能已经包含servlet所需的信息。对不起,我已经反复阅读了您的答案,但仍然不理解您的解决方案。你说我可以“仅从URL创建我的图像”是什么意思?图像(图表)根据用户输入创建,并通过表单提交。servlet“返回”图像是什么意思?它返回存储它的URL?我真的很想了解你的解决方案,如果这些都是愚蠢的问题,对不起。检查我对leeand00的回复,以防它与您的解决方案有实际关系。谢谢你的回复。