добавление диаграммы в буфер

Я создал веб-проект в struts2.in, я построил график, используя jfreechart, который я реализовал в своем классе Action.

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

который отображает график в отдельном окне типа апплета, который я гуглил и нашел способ сохранить эту диаграмму как изображение, чтобы в моем файле jsp я мог включить это изображение. Но в конце, когда я развертывал, мне пришлось преобразовать мой проект в файл WAR, но если я преобразовал проект в WAR, я не могу получить доступ к изображениям (графику), которые меняются в зависимости от запроса пользователя. Поэтому я подумал о сохранении диаграммы / изображения в буфере или чем-то еще, чтобы он отображался позже, удаляется, как только запрашивается новый график или пользователь выходит из системы.

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

Ответы на вопрос(1)

Решение Вопроса

что вы пытаетесь сделать. Для этого я получил второй сервлет (очень простой), который принимает параметры на основе запрошенной диаграммы и генерирует диаграмму какPNG, По сути, вы вызываете сервлет с необходимыми параметрами. Вы берете эти параметры и строите свой график. Важная часть возврата графика происходит вChartUtilities.writeChartAsPNG(out, chart, 640, 480) где первый параметр - выходной поток для ответа на вызывающую страницу. Второй параметр - это график, который вы построили. Последние два параметра используются для размера изображения. Когда вы вызываете этот сервлет, он будет внутри

<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.");
    }
}
 Lipongo28 окт. 2012 г., 23:13
Попробуйте выполнить фильтрацию в этом сообщении stackoverflow.stackoverflow.com/questions/3843548/...  Это может помочь вам.
 HkFreaKuser167371827 окт. 2012 г., 20:26
trashgod я думаю, что ты помогаешь 2-й или 3-й раз, спасибо, мужик, я попробую это. Хотя у меня нет достаточных знаний по сервлету, jsp, j2ee, я надеюсь, что я делаю это правильно, и это работает
 HkFreaKuser167371828 окт. 2012 г., 19:06
Lipongo Sry не заметил, что ты чувак, благодаря тебе, но я думаю, я не могу сделать этот подход, потому что я использую распорки 2, и если поставить <имя сервлета>...... и т. д. в моем web.xml мой веб-проект не работает, если я удаляю этот проект отображений сервлетов. Так что я должен отказаться от этой функции.
 Lipongo27 окт. 2012 г., 20:47
Просто дополнительная заметка, trashgod отредактировал пост, я разместил контент. В любом случае, рад, что это помогло.

Ваш ответ на вопрос