Как отобразить линейный график, используя JFreeChart в JSP? - PullRequest
2 голосов
/ 20 марта 2009

HI All:
Я использую ниже, чтобы воспроизвести линейный график. когда я запускаю приведенный ниже код, я получаю окно, но оно пустое и не отображает график. Пожалуйста, помогите мне, а также скажите мне, как отобразить линейный график на html-странице, используя следующий код.

import org.jfree.chart.*;
import org.jfree.chart.plot.PlotOrientation;
import org.jfree.data.xy.*;

public class xyLine {

    public static void main(String arg[]) {
        XYSeries series = new XYSeries("Average Weight");
        series.add(20.0, 20.0);
        series.add(40.0, 25.0);
        series.add(55.0, 50.0);
        series.add(70.0, 65.0);
        XYDataset xyDataset = new XYSeriesCollection(series);
        JFreeChart chart = ChartFactory.createXYLineChart(
            "XYLine Chart using JFreeChart", "Age", "Weight",
            xyDataset, PlotOrientation.VERTICAL, true, true, false);
        ChartFrame frame1 = new ChartFrame("XYLine Chart", chart);
        frame1.setVisible(true);
        frame1.setSize(300, 300);
    }
}

Ответы [ 2 ]

5 голосов
/ 26 марта 2009

Я тоже делал это некоторое время назад, но у меня также есть код, так что вот подсказка ..

Как сказал Турбьёрн Равн Андерсен, вам нужно иметь сервлет, генерирующий изображения вместо веб-страниц. Это означает, что метод processRequest вашего сервлета выглядит примерно так:

protected void processRequest(HttpServletRequest request, HttpServletResponse response)
    throws ServletException, IOException {

        response.setContentType("image/png");
        ServletOutputStream os = response.getOutputStream();
        ImageIO.write(getChart(request), "png", os);
        os.close();
    }

private RenderedImage getChart(HttpServletRequest request) {
        String chart = request.getParameter("chart");
        // also you can process other parameters like width or height here
        if (chart.equals("myDesiredChart1")) {
            JFreeChart chart = [create your chart here];
            return chart.createBufferedImage(width, height)
        }

Затем вы можете использовать этот сервлет в качестве источника изображения на других страницах, например, вот так.

<img src="/ChartDrawerServlet?chart=myDesiredChart1&width=..and other processed parameters" ..>

И все готово:)

0 голосов
/ 20 марта 2009

Вы используете подход свинга, который не работает в веб-настройках. Вы должны сгенерировать изображение и выровнять его, например, поток байтов в формате JPEG и возвратите TH в качестве ответа от вашего сервлета с правильным типом MIME.

Я сделал это много месяцев назад, но у меня больше нет кода.

...