2011-07-24 30 views
0

如何通过使用Servlet和呈现的图像绘制折线图? 我写了一个servlet并创建了一个图表,但我不知道如何在我的jsp页面上显示它。在jsp中使用servlet的JFree图表

我的servlet代码:

public class GraphGen extends HttpServlet { 

    public void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { 

     genGraph(req, resp); 
    } 

    public void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { 
     genGraph(req, resp); 
    } 

    @SuppressWarnings("deprecation") 
    public void genGraph(HttpServletRequest req, HttpServletResponse resp) { 

     try { 
      OutputStream out = resp.getOutputStream(); 

      // Create a simple Bar chart 
      System.out.println("Setting dataset values"); 

      DefaultCategoryDataset dataset = new DefaultCategoryDataset(); 
      dataset.setValue(30, "Girls","SCIENCE CLASS"); 
      dataset.setValue(30, "Boys","SCIENCE CLASS"); 
      dataset.setValue(10, "Girls","ECONOMICS CLASS"); 
      dataset.setValue(50, "Boys","ECONOMICS CLASS"); 
      dataset.setValue(5, "Girls","LANGUAGE CLASS"); 
      dataset.setValue(55, "Boys","LANGUAGE CLASS"); 

      JFreeChart chart = ChartFactory.createBarChart3D(
       "Comparison between Girls and Boys in Science," + "Economics and Language classes", 
       "Students Comparisons", "No of Students", 
       dataset, 
       PlotOrientation.VERTICAL, 
       true, 
       true, 
       false); 

      chart.setBackgroundPaint(Color.white); 

      // Set the background colour of the chart 
      chart.getTitle().setPaint(Color.blue); 

      // Adjust the colour of the title 
      CategoryPlot plot = chart.getCategoryPlot(); 

      // Get the Plot object for a bar graph 
      plot.setBackgroundPaint(Color.white); 
      plot.setRangeGridlinePaint(Color.red); 

      CategoryItemRenderer renderer = plot.getRenderer(); 
      renderer.setSeriesPaint(0, Color.red); 
      renderer.setSeriesPaint(1, Color.green); 
      renderer.setItemURLGenerator(
       new StandardCategoryURLGenerator(
        "index1.html", 
        "series", 
        "section")); 
      renderer.setToolTipGenerator(new StandardCategoryToolTipGenerator()); 

      resp.setContentType("image/png"); 

      ChartUtilities.writeChartAsPNG(out, chart, 625, 500); 

     } catch (Exception e) { 
      System.err.println("Problem occurred creating chart." + e.getMessage()); 
     } 
    } 
+0

您是否已经问Google博士http://stackoverflow.com/questions/1255717/dynamically-generate-jfreechart-in-servlet? – home

+0

谢谢,你遇到的问题是什么,什么不工作? – home

+0

如何在jsp页面上显示此图像? – Bahareh

回答

0
chart.setBackgroundPaint(Color.white); 

      // Set the background colour of the chart 
      chart.getTitle().setPaint(Color.blue); 

      // Adjust the colour of the title 
      CategoryPlot plot = chart.getCategoryPlot(); 

      // Get the Plot object for a bar graph 
      plot.setBackgroundPaint(Color.white); 
      plot.setRangeGridlinePaint(Color.red); 

      CategoryItemRenderer renderer = plot.getRenderer(); 
      renderer.setSeriesPaint(0, Color.red); 
      renderer.setSeriesPaint(1, Color.green); 
      renderer.setItemURLGenerator(
       new StandardCategoryURLGenerator(
        "index1.html", 
        "series", 
        "section")); 
      renderer.setToolTipGenerator(new StandardCategoryToolTipGenerator()); 

      resp.setContentType("image/png"); 

      ChartUtilities.writeChartAsPNG(out, chart, 625, 500); 

......而不是上面的代码只是使用此代码,这是更EASSY ......

JFreeChart chart = ChartFactory.createBarChart3D(
       "Comparison between Girls and Boys in Science," + "Economics and Language classes", 
       "Students Comparisons", "No of Students", 
       dataset, 
       PlotOrientation.VERTICAL, 
       true, 
       true, 
       false); 


      try { 

       final ChartRenderingInfo info = new ChartRenderingInfo(new StandardEntityCollection()); 
       final File file1 = new File(getServletContext().getRealPath(".") + "/images/piechart/lineChart.png"); 

       ChartUtilities.saveChartAsPNG(file1, chart, 600, 400, info); 
      } catch (Exception e) { 
       System.out.println(e); 

      } 

。 ..............在jsp页面中使用此鳕鱼.......

<div> 
    <img src="path/images/piechart/lineChart.png" 
     width="600" height="400" border="0" usemap="#chart" /> 
</div>