0

struts2.inでWebプロジェクトを作成し、Actionクラスで実装したjfreechartを使用してグラフをプロットしました。

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

これは、私がグーグルで検索した別のアプレットの種類のウィンドウにグラフを表示し、このチャートを画像として保存して、jspファイルにこの画像を含めることができるようにする方法を見つけます。しかし、最後にデプロイするときにプロジェクトをWARファイルに変換する必要がありましたが、プロジェクトをWARに変換すると、ユーザーの要求に基づいて変更される画像(グラフ)にアクセスできません。チャート/画像を保存することを考えました。新しいグラフが要求されるか、ユーザーがログアウトするとすぐに削除されて後で表示されるように、バッファーなどにあります。

それで、あなたはこれをどのように達成するかについていくつかの考えを与えることができますか?前もって感謝します

4

1 に答える 1

2

私はあなたがやろうとしていることに似た何かを書きました。これを実現する方法は、要求されたチャートに基づいてパラメーターを受け取り、チャートをとして生成する2番目のサーブレット(非常に単純)を用意することでしたPNG。基本的に、必要なパラメータを使用してサーブレットを呼び出します。これらのパラメータを使用して、グラフを作成します。チャートを返す重要な部分はChartUtilities.writeChartAsPNG(out, chart, 640, 480)、最初のパラメーターが呼び出し元ページへの応答の出力ストリームである場合に発生します。2番目のパラメーターは、作成したチャートです。最後の2つのパラメーターは、画像のサイズに使用されます。このサーブレットを呼び出すと、内部になります

<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.");
    }
}
于 2012-10-26T19:17:03.440 に答える