отображать изображения с помощью сервлетов - PullRequest
1 голос
/ 04 июля 2011

У меня есть сценарий, в котором мне нужно отобразить таблицы (сгенерированные с помощью JTable), преобразовать их в изображение png, а затем отобразить их с помощью сервлетов.

Ниже приведен код в сервлете для отображения таблицы:

{
        table = u.generateTableChart("datamonth");    
        saveToServlet(table, table.getTableHeader(), p_resp);
}

void saveToServlet(JTable table, JTableHeader header,
            HttpServletResponse p_resp)
    {

        int w = Math.max(table.getWidth(), header.getWidth());
        int h = table.getHeight() + header.getHeight();
        OutputStream out = null;
        BufferedImage bi = new BufferedImage(w, h, BufferedImage.TYPE_INT_RGB);
        Graphics2D g2 = bi.createGraphics();
        header.paint(g2);
        g2.translate(0, header.getHeight());
        table.paint(g2);
        g2.dispose();
        try {
            p_resp.setContentType("image/png");
            out = p_resp.getOutputStream();
            ImageIO.write(bi, "png", out);

        } catch (IOException ioe) {
            System.out.println("write: " + ioe.getMessage());
        }
    }

Кажется, это выдает эту ошибку, когда я пытаюсь просмотреть его на веб-странице. Невозможно отобразить изображение, так как в нем слишком много ошибок.

Я могу сохранить файл во временном местоположении и увидеть график.

Для диаграмм, созданных с использованием JFreeCharts, я использую это:

 ServletOutputStream out = null;

    try {
        out = p_resp.getOutputStream();
        p_resp.setContentType("image/png");
        chart=u.genarateLineChart(m_martiniInstance);
        ChartUtilities.writeChartAsJPEG(out, chart, 625, 500); 
    }

и все же не удача

Заранее спасибо, Бхавья

1 Ответ

3 голосов
/ 04 июля 2011

Я думаю, проблема в том, что вы устанавливаете тип контента как "image/png", но пишете в формате jpeg writeChartAsJPEG использовать

ChartUtilities.writeChartAsPNG(...)
...