jfreechart 結合 struts2

actionjava

 1 package kite.struts2.action;  2 
 3 import java.awt.Font;  4 import java.io.ByteArrayInputStream;  5 import java.io.ByteArrayOutputStream;  6 import java.io.InputStream;  7 
 8 import javax.annotation.Resource;  9 
10 import org.jfree.chart.ChartFactory; 11 import org.jfree.chart.ChartUtilities; 12 import org.jfree.chart.JFreeChart; 13 import org.jfree.chart.labels.StandardPieSectionLabelGenerator; 14 import org.jfree.chart.plot.PiePlot; 15 import org.jfree.data.general.DefaultPieDataset; 16 import org.springframework.context.annotation.Scope; 17 import org.springframework.stereotype.Controller; 18 
19 import kite.domain.Question; 20 import kite.domain.statistics.OptionStatisticsModel; 21 import kite.domain.statistics.QuestionStatisticsModel; 22 import kite.service.StatisticsService; 23 
24 @Controller("chartOutputAction") 25 @Scope("prototype") 26 public class ChartOutputAction extends BaseAction<Question>
27 { 28     @Resource(name="statisticsService") 29  StatisticsService statisticsService; 30     private Integer qid; 31     
32     private Integer chartType; 33     public String execute() throws Exception 34  { 35         return SUCCESS; 36  } 37     
38     public InputStream getInputStream() 39  { 40         try
41  { 42             QuestionStatisticsModel qsm = statisticsService.statistics(qid); 43             DefaultPieDataset ds = new DefaultPieDataset(); 44             for(OptionStatisticsModel osm : qsm.getOsms()) 45  { 46  ds.setValue(osm.getOptionLabel(), osm.getCount()); 47  } 48             JFreeChart chart = ChartFactory.createPieChart(qsm.getQuestion().getTitle(), ds, true, false, false); 49             
50             //設置標題和提示條中文
51             chart.getTitle().setFont(new Font("宋體",Font.BOLD, 25)); 52             chart.getLegend().setItemFont(new Font("宋體", Font.BOLD, 20)); 53             
54             PiePlot plot = (PiePlot) chart.getPlot(); 55             plot.setLabelFont(new Font("宋體", Font.PLAIN, 15)); 56             plot.setLabelGenerator(new StandardPieSectionLabelGenerator("{0}(選擇人數:{1}總數:{3} 佔百分比:{2})")); 57             
58             ByteArrayOutputStream baos = new ByteArrayOutputStream(); 59             ChartUtilities.writeChartAsJPEG(baos, chart, 800, 600); 60             ByteArrayInputStream bais = new ByteArrayInputStream(baos.toByteArray()); 61             return bais; 62         } catch (Exception e) 63  { 64  e.printStackTrace(); 65  } 66         return null; 67         
68  } 69 
70     public Integer getQid() 71  { 72         return qid; 73  } 74 
75     public void setQid(Integer qid) 76  { 77         this.qid = qid; 78  } 79 
80     public Integer getChartType() 81  { 82         return chartType; 83  } 84 
85     public void setChartType(Integer chartType) 86  { 87         this.chartType = chartType; 88  } 89 }

struts.xml 文件配置
1 <action name="chartOutputAction" class="chartOutputAction">
2             <result name="success" type="stream">
3                 <param name="contentType">image/jpeg</param>
4                 <param name="inputName">inputStream</param>//getInputStream inputStream 
5                 <param name="bufferSize">1024</param> 
6             </result>
7 </action>



改進 使用 struts2的 jfreechart插件 ChartResult

修改action 文件
 1 public JFreeChart getChart()  2  {  3         try
 4  {  5             QuestionStatisticsModel qsm = statisticsService.statistics(qid);  6             DefaultPieDataset ds = new DefaultPieDataset();  7             for(OptionStatisticsModel osm : qsm.getOsms())  8  {  9  ds.setValue(osm.getOptionLabel(), osm.getCount()); 10  } 11             JFreeChart chart = ChartFactory.createPieChart(qsm.getQuestion().getTitle(), ds, true, false, false); 12             
13             //設置標題和提示條中文
14             chart.getTitle().setFont(new Font("宋體",Font.BOLD, 25)); 15             chart.getLegend().setItemFont(new Font("宋體", Font.BOLD, 20)); 16             
17             PiePlot plot = (PiePlot) chart.getPlot(); 18             plot.setLabelFont(new Font("宋體", Font.PLAIN, 15)); 19             plot.setLabelGenerator(new StandardPieSectionLabelGenerator("{0}(選擇人數:{1}總數:{3} 佔百分比:{2})")); 20             
21             return chart; 22         } catch (Exception e) 23  { 24  e.printStackTrace(); 25  } 26         return null; 27         
28     }
 
  

 

修改xml配置文件 須要繼承 jfreechart-default

<action name="chartOutputAction" class="chartOutputAction">
  <result name="success" type="chart">
    <param name="height">600</param>
    <param name="width">800</param>
    <param name="bufferSize">1024</param>
  </result>
</action>spring

相關文章
相關標籤/搜索