Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/317.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 使用servlet显示图像_Java_Swing_Servlets_Jfreechart - Fatal编程技术网

Java 使用servlet显示图像

Java 使用servlet显示图像,java,swing,servlets,jfreechart,Java,Swing,Servlets,Jfreechart,我有一个场景,我需要显示表(使用JTable生成)并将其转换为png图像,然后使用servlet显示它们 以下是servlet中显示表的代码: { table = u.generateTableChart("datamonth"); saveToServlet(table, table.getTableHeader(), p_resp); } void saveToServlet(JTable table, JTableHeader header,

我有一个场景,我需要显示表(使用JTable生成)并将其转换为png图像,然后使用servlet显示它们

以下是servlet中显示表的代码:

{
        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); 
    }
还是不走运

提前感谢,,
Bhavya

我认为问题在于您正在将内容类型设置为
“image/png”
但正在编写jpeg
writeChartAsJPEG
使用


您的服务器在哪个平台(Windows、Linux)上?@SJuan tomcat服务器在哪个平台上RHEL@Bhavya:您确定图像是RGB格式的吗?如果生成的图像不用于屏幕使用,则通常会发生此错误。是否可以尝试下载该文件而不是查看它?我记得在使用从Linux控制台启动的java图形库时遇到了一些问题,因为没有加载X库。@Prashanth我更改了代码并检查了这一点。这似乎没有帮助。正常情况下,从浏览器缓存响应使用ctrl+F5完全重新加载,或删除浏览器缓存并尝试重新加载图像。我可以使用提供的代码查看折线图,但不使用Jtable,对此有何回答?建议您将其作为单独的问题来解决!
ChartUtilities.writeChartAsPNG(...)