多多色-多人伦交性欧美在线观看-多人伦精品一区二区三区视频-多色视频-免费黄色视屏网站-免费黄色在线

國內(nèi)最全IT社區(qū)平臺 聯(lián)系我們 | 收藏本站
阿里云優(yōu)惠2
您當(dāng)前位置:首頁 > php框架 > 框架設(shè)計 > struts2+MySQL+jfreechart

struts2+MySQL+jfreechart

來源:程序員人生   發(fā)布時間:2015-01-30 08:30:10 閱讀次數(shù):5169次
1.所需要的jar包如圖1所示

2.工程目錄的格式如圖2所示


2.新建配置文件(struts-jfreechart.xml)
<!DOCTYPE struts PUBLIC 
"-//Apache Software Foundation//DTD Struts Configuration 2.0//EN" 
"http://struts.apache.org/dtds/struts⑵.0.dtd"> 
<struts> 
<package name="jFreeChartDemonstration" extends="struts-default" namespace="/jfreechart"> 
<result-types> 
<result-type name="chart" class="org.apache.struts2.dispatcher.ChartResult"></result-type> 
</result-types> 
<action name="JFreeChartAction" class="com.lyf.jf.JFreeChartAction"> 
<result type="chart"> 
<param name="width">400</param> 
<param name="height">300</param> 
</result> 
</action> 
</package> 
</struts>
 說明:這里只需要說明下struts-jfreechart.xml,這里直接調(diào)用已寫好的類ChartResult,這個類是繼承自com.opensymphony.xwork2.Result,傳入生成圖片大小的參數(shù)width和height就能夠了。
3.新建struts.xml文件
<?xml version="1.0" encoding="UTF⑻"?> 
<!DOCTYPE struts PUBLIC 
"-//Apache Software Foundation//DTD Struts Configuration 2.0//EN" 
"http://struts.apache.org/dtds/struts⑵.0.dtd"> 

<struts> 
<include file="struts-jfreechart.xml" /> 
</struts>
4.修改web.xml文件
  <welcome-file-list> 
    <welcome-file>/index.jsp</welcome-file> 
  </welcome-file-list> 
  <filter> 
  <filter-name>struts2</filter-name> 
  <filter-class>org.apache.struts2.dispatcher.FilterDispatcher</filter-class> 
 </filter> 
 <filter-mapping> 
  <filter-name>struts2</filter-name> 
  <url-pattern>/*</url-pattern> 
 </filter-mapping>
5.新建index.jsp頁面
<%@ page language="java" pageEncoding="utf⑻"%> 
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> 
<%@ taglib uri="/struts-tags" prefix="s"%> 
<html> 
 <head> 
  <title>2010計算機編程語言市場份</title> 
 </head> 
 <body> 
  <h2> 
   <center>2010計算機編程圖書銷量統(tǒng)計圖</center>  
  </h2> 
    <center> 
       <img src="<s:url value='jfreechart/JFreeChartAction.action'/>" /> 
    </center> 
 </body> 
</html>
6.新建JFreeChartAction繼承ActionSupport,生成JFreeChart對象并保存到chart中
package com.lyf.jf;
import java.awt.Color;
import java.awt.Font;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import org.jfree.chart.ChartFactory;
import org.jfree.chart.JFreeChart;
import org.jfree.chart.StandardChartTheme;
import org.jfree.chart.labels.StandardPieSectionLabelGenerator;
import org.jfree.chart.plot.PiePlot;
import org.jfree.chart.title.LegendTitle;
import org.jfree.chart.title.TextTitle;
import org.jfree.data.general.DefaultPieDataset;
import org.jfree.data.general.PieDataset;
import com.opensymphony.xwork2.ActionSupport;
public class JFreeChartAction extends ActionSupport {
 
 static final long serialVersionUID = 0L;
  /**
   * JFreeChart對象chart,注意這個名稱是固定的。
   * 供ChartResult調(diào)用->ActionInvocation.getStack().findValue("chart")
   */
  private JFreeChart chart;
  // 定義圖表的寬度
  private Integer width;
  // 定義圖表的長度
  private Integer height;
  @Override
  public String execute() throws Exception {
   width = 400;
   height = 300;
   // 生成JFreeChart對象
   makePieChart();
   return SUCCESS;
  }
  // 生成餅圖
  public void makePieChart() {
    // 設(shè)置數(shù)據(jù)
    PieDataset data;
    data=createDataset();
   
    //解決亂碼問題(不能顯示中文的問題)
   StandardChartTheme mChartTheme = new StandardChartTheme("CN");
      mChartTheme.setLargeFont(new Font("黑體", Font.BOLD, 20));
      mChartTheme.setExtraLargeFont(new Font("宋體", Font.PLAIN, 15)); //標(biāo)題
      mChartTheme.setRegularFont(new Font("宋體", Font.PLAIN, 15));
      ChartFactory.setChartTheme(mChartTheme);
    chart = ChartFactory.createPieChart("圖書銷量統(tǒng)計圖", // 圖表標(biāo)題
    data, // 數(shù)據(jù)
    true, // 是不是顯示圖例
    false, // 是不是顯示工具提示
    false // 是不是生成URL
     );
   
     //設(shè)置1系列的屬性
       //取得餅圖的Plot對象
       PiePlot plot = (PiePlot)chart.getPlot();
       //用來顯示標(biāo)注的注解,{0}:{1}用來設(shè)置顯示的格式
       plot.setLabelGenerator(new StandardPieSectionLabelGenerator("{0}:{1}"));
       plot.setBackgroundPaint(Color.gray);//設(shè)置背風(fēng)景
      //設(shè)置簡單標(biāo)簽
       plot.setSimpleLabels(true);
       //標(biāo)題
       TextTitle texttitle=chart.getTitle();
       texttitle.setFont(new Font("宋體", Font.BOLD, 30));
       //圖示
       LegendTitle legendtitle =chart.getLegend();
       legendtitle.setItemFont(new Font("宋體", Font.BOLD, 14));
       //設(shè)定背景透明度(0⑴.0之間)
       plot.setBackgroundAlpha(0.5f);
       //設(shè)定前景透明度(0⑴.0之間)
       plot.setForegroundAlpha(0.60f);
  }
   //準(zhǔn)備數(shù)據(jù)集(連接MySQL數(shù)據(jù)庫
  private PieDataset createDataset() {
    double[][] table = null;
    String[] name = null;
    String[] number = null;
    int result = 0;
    try{
     Class.forName("com.mysql.jdbc.Driver").newInstance();
     Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/sale", "root", "fab");
     ResultSet rs = conn.createStatement().executeQuery("select name,number from sale");
     // 獲得行數(shù)
     if (rs.last()){
      result = rs.getRow();
      rs.beforeFirst(); // 指針回滾
     }
     table = new double[result][rs.getMetaData().getColumnCount() - 1];// 定義寄存數(shù)據(jù)的2維數(shù)組
     name = new String[result];
     number = new String[rs.getMetaData().getColumnCount() - 1]; // 定義寄存數(shù)據(jù)表頭的1維數(shù)組
     rs.next();
     for (int j = 0; j < rs.getMetaData().getColumnCount() - 1; j++) {
      number[j] = rs.getMetaData().getColumnName(j + 2); // 取出表頭并寄存數(shù)組
     }
     int i = 0;
     rs.beforeFirst();
     while (rs.next()) {
      name[i] = rs.getString(1);
      for (int j = 0; j < rs.getMetaData().getColumnCount() - 1; j++)
       table[i][j] = rs.getDouble(j + 2); // 取出數(shù)據(jù)并存入2維數(shù)組
      i++;
     }
     conn.close(); // 關(guān)閉連接
     rs.close(); // 關(guān)閉查詢
    } catch (Exception ex) {
     System.err.println("Exception:" + ex.getMessage());
    }
       //創(chuàng)建DefaultPieDataset類型的數(shù)據(jù)集,并行數(shù)據(jù)集中添加數(shù)據(jù)(從數(shù)據(jù)庫中取的數(shù)據(jù))
    DefaultPieDataset dataset = new DefaultPieDataset();
    for (int i = 0; i < number.length; i++)
     for (int j = 0; j < result; j++) {
   dataset.setValue(name[j],table[j][i] );
   //調(diào)試用
      System.out.println(table[j][i]);
      System.out.println(name[j]);
     }
    return dataset;
   }
  public JFreeChart getChart() {
   return chart;
  }
  public void setChart(JFreeChart chart) {
   this.chart = chart;
  }
  public Integer getWidth() {
   return width;
  }
  public void setWidth(Integer width) {
   this.width = width;
  }
  public Integer getHeight() {
   return height;
  }
  public void setHeight(Integer height) {
   this.height = height;
  }
}
7.數(shù)據(jù)庫腳本
/*
SQLyog 企業(yè)版 - MySQL GUI v7.14
MySQL - 5.0.18-nt : Database - sale
*********************************************************************
*/
/*!40101 SET NAMES utf8 */;
/*!40101 SET SQL_MODE=''*/;
/*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */;
/*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/`sale` /*!40100 DEFAULT CHARACTER SET gbk */;
USE `sale`;
/*Table structure for table `sale` */
DROP TABLE IF EXISTS `sale`;
CREATE TABLE `sale` (
  `name` varchar(150) default NULL COMMENT '書名',
  `number` varchar(150) default NULL COMMENT '數(shù)量'
) ENGINE=InnoDB DEFAULT CHARSET=gbk;
/*Data for the table `sale` */
insert into `sale`(`name`,`number`) values ('C++','20'),('Java','20'),('數(shù)據(jù)結(jié)構(gòu)','30'),('安卓','40'),('IOS','25');
/*!40101 SET SQL_MODE=@OLD_SQL_MODE */;
/*!40014 SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS */;

8.通過http://localhost:8080/JavafreeChartReport/要求訪問,就會出現(xiàn)以下圖3所示:



生活不易,碼農(nóng)辛苦
如果您覺得本網(wǎng)站對您的學(xué)習(xí)有所幫助,可以手機掃描二維碼進行捐贈
程序員人生
------分隔線----------------------------
分享到:
------分隔線----------------------------
關(guān)閉
程序員人生
主站蜘蛛池模板: 欧美最猛性xxxxx亚洲精品 | www.伊人网| 亚洲天堂中文字幕 | 国产欧美日韩在线一区二区不卡 | 在线观看亚洲国产 | 亚洲国产一区二区三区最新 | 日韩在线视频不卡一区二区三区 | 欧美最爽乱淫视频播放黑人 | 欧美成人性色xxxx视频 | 影视先锋av资源噜噜 | 国产精品亚洲精品久久成人 | 久久中文字幕日韩精品 | 视频在线视频免费观看 | 精品欧美一区二区三区 | 中文字幕一区二区三区亚洲精品 | 自拍偷拍1 | 手机看片国产免费 | free xxx性欧美hd| 亚洲第一精品夜夜躁人人爽 | 日本不卡视频一区二区 | 久久精品看片 | 嫩草影院在线观看未满十八 | 波多野结衣四虎精品影库 | 最近2019中文字幕免费大全5 | 亚洲欧美国产精品久久久 | 免费日韩精品 | 国产一区二区三区四区五区 | 亚洲高清视频在线观看 | 综合久久久久综合 | 国产一区二区三区樱花动漫 | 久久精品一级 | 亚洲一区二区三区高清不卡 | 欧美一区二区三区久久综 | 成人福利网址 | 微信影院手机在线播放 | 91中文字幕yellow字幕网 | 久操不卡| 成人精品视频在线 | 欧美日韩中文字幕一区二区高清 | 亚洲欧美中文字幕高清在线一 | 羞羞动漫网 |