gpt4 book ai didi

java - 将图表添加到缓冲区

转载 作者:行者123 更新时间:2023-12-02 07:29:36 25 4
gpt4 key购买 nike

我在 struts2.in 中创建了 Web 项目,并使用 jfreechart 绘制了一个图表,该图表已在我的 Action 类中实现。

http://www.java2s.com/Code/Java/Chart/JFreeChartTimeSeriesDemo10withperminutedata.htm

它在单独的小程序类型窗口中显示图表,我在谷歌上搜索并找到一种方法将此图表保存为图像,以便在我的 jsp 文件中我可以包含此图像。 但最后当我部署时,我必须将我的项目转换为 WAR 文件,但如果我将项目转换为 WAR,我将无法访问根据用户请求进行更改的图像(图形)。所以我想到保存图表/图像在缓冲区或其他东西中,以便稍后在请求新图表或用户注销时删除它。

那么您能否给出一些关于如何实现这一目标的想法。提前致谢

最佳答案

我写了一些与你想做的类似的东西。我完成此任务的方法是使用第二个 servlet(非常简单),它根据请求的图表接收参数并生成 PNG 形式的图表。基本上,您可以使用所需的参数调用 servlet。您采用这些参数并构建图表。返回图表的重要部分发生在 ChartUtilities.writeChartAsPNG(out, Chart, 640, 480) 中,其中第一个参数是响应调用页面的输出流。第二个参数是您构建的图表。最后两个参数用于图像的大小。当您调用此 servlet 时,它将位于

<img src="URL_to_Servlet" />

URL 包含构建图表所需的参数。

下面是您需要的代码,仅关注从 Servlet 将图表作为动态构建的图像返回。

import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.ServletOutputStream;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.jfree.chart.ChartUtilities;
import org.jfree.chart.JFreeChart;

public class ChartServlet extends HttpServlet {

/*
* (non-Javadoc) @see
* javax.servlet.http.HttpServlet#doGet(
* javax.servlet.http.HttpServletRequest,
* javax.servlet.http.HttpServletResponse)
*/
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
JFreeChart chart = this.generateLineChart();
ServletOutputStream out = resp.getOutputStream();
resp.setContentType("image/png");
ChartUtilities.writeChartAsPNG(out, chart, 640, 480);
out.close();
}

/**
* Generate chart.
*
* @return the j free chart
* @throws IOException Signals that an I/O exception has occurred.
*/
private JFreeChart generateLineChart() throws IOException {

return chart;
}

/*
* (non-Javadoc) @see javax.servlet.GenericServlet#init()
*/
@Override
public void init() throws ServletException {
// TODO Auto-generated method stub
System.out.println("Starting up charts servlet.");
}
}

关于java - 将图表添加到缓冲区,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13092729/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com