中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

怎么用Java在Web頁面上輸出統計圖

發布時間:2022-01-10 09:10:33 來源:億速云 閱讀:157 作者:iii 欄目:編程語言

這篇文章主要介紹“怎么用Java在Web頁面上輸出統計圖”的相關知識,小編通過實際案例向大家展示操作過程,操作方法簡單快捷,實用性強,希望這篇“怎么用Java在Web頁面上輸出統計圖”文章能幫助大家解決問題。

  在Inte.NET 和Intranet 的應用中,數據庫和Web 技術的結合是傳統MIS 系統移植到Internet(Intrant) 環境的關鍵, 已有不少廠商推出了各自的產品,但這些產品基本上是實現數據的html 格式輸出。在實際應用中,我們經常需要把數據以統計圖的形式表現出來,例如股票行情曲線圖的輸出。傳統的方法是把統計圖作為一個圖形文件放到Web 服務器的目錄中。這種做法雖然簡單,但有明顯的局限性:一是圖形文件要占用較大存儲空間;二是難以適應靈活復雜的查詢要求;三是圖形文件隨數據庫的變化而更新,加重了服務器的負擔,也容易造成圖形和數據庫的不一致。
  顯然,要實現上述要求,需要兩個關鍵環節:一是從數據庫中讀出數據;二是根據讀出的數據在Web 頁面中繪圖。我們采用JdbC 訪問數據庫,在Web 頁面中繪圖則使用Java.awt 包中提供的Graphics 類實現。
  為便于表述,建立數據表如下: 

項 目

指 標

水 產 養 殖

60

工 程 管 理

89

抗 旱 防 汛

100

財 務

200

辦 公 室

350

勘 測 設 計

80

  我們的目標就是把上表用統計圖表現出來(本文用水平柱狀圖)。本文中所指數據庫均為如上形式的表,其字段1 為字符形字段,表示項目信息;字段2 為數值形字段(用浮點形讀出),表示指標數。實際應用中,對程序稍作修改,就可使其更加靈活通用。
  為了繪制各種形式的圖表,先定義一個Graph 抽象類(注意不是Graphics): 
import java.sql. *;
import java.awt. *;
abstract class Graph{
 int height,width; // 繪圖區域的高和寬
 int maxRow=50,row=0;
 // 可容納的最大記錄數和實有記錄數
 Color color=new Color(50,50,200); // 默認繪圖顏色
 float scale;      // 比例尺
 String[] name;   // 項目名緩沖區
 float[] value;    // 指標值緩沖區
 public Graph(Dimension d,int maxRows,Color fColor){
   height=d.height;
   width=d.width;
   name=new String[maxRows];
   value=new float[maxRows];
   color=fColor;
 }
 public void setResult(ResultSet result)
{ // 把查詢結果讀入緩沖區
  try{
row=0;
   while(result.next() &&row<maxRow){
name[row]=result.getString(1);
value[row]=result.getFloat(2);
row + +;
}
}
catch(Exception ex){
System.out.println(“n failure!" +ex.getMessage()); }
}

// 繪制統計圖的抽象方法, 在子類中實現
}

  在這個類中,定義了圖表的一般特性,如顏色、比例尺、記錄緩沖區等,并實現了把查詢結果置入緩沖區的setResult 方法。因為各種圖表的繪制方法完全不同,故把draw 方法定義為抽象方法,有待其子類實現。
  限于篇幅,本文僅介紹實現繪制水平柱狀圖的子類GraPHPost, 其主要功能是實現draw 方法。其他子類與其類似。
import java.sql.*;
import java.awt.*;
public class GraphPost extends Graph{
  float interval=0;
 //柱間空白在柱寬度(含柱間空白) 
 中所占比例,0<interval0) interval=ival;
  }
  void draw(Graphics g){
FontMetrics fontMetrics=g.getFontMetrics();
try{
  Color bgColor=new Color(255,255,255); 
  g.setColor(bgColor); 
  g.fillRect(0,0,width,height); //填充背景色
  g.setColor(color);
  int maxLen=0; 
  float maxValue=0;
  for (int i=0;imaxLen)
  maxLen=fontMetrics.stringWidth(name[i]);
     if (value[i]>maxValue)
   maxValue=value[i];
   }
   xMargin=maxLen+10;// 
   yMargin=fontMetrics.getHeight()+10;
   int cHeight=fontMetrics.getHeight();
   int step=getStep(maxValue);
   //計算x坐標刻度單位
   scale=(width-xMargin)/maxValue;
   eHight=(height-yMargin)/row;
   g.drawRect(xMargin-1,0,width-xMargin,height
   -yMargin); //繪出圖形外框
   for(int i=1;i*step10){
  mo=mo*10;
  st=(int)(value/10)/mo;
 }
 return (st+1)*mo;
}
}

  對數據庫的查詢在applet 主類中用creatResultSet 方法實現:
private static ResultSet creatResultSet
(String dStr,String sqlStr) 
/ * 根據給定的數據源和
sql 查詢語句讀取數據庫*/ {......}

  在applet 主類的paint() 方法中,調用類GraphPost 的draw 方法,即可實現統計圖的輸出。為把查詢結果保存在GraphPost 的數據緩沖區中供paint() 方法多次使用,需要把一個GraphPost 對象定義為applet 主類的成員。在applet 主類的init() 方法中,對GraphPost 對象初始化,并完成JDBC 驅動程序注冊。在applet 主類的start() 方法中,連接數據庫,執行查詢,并把查詢結果存放到GraphPost 對象的數據緩沖區中。這樣, 在每次回到包含該applet 的頁面時, 都要重新查詢數據庫, 保證用戶閱讀到數據庫的最新信息。
  下面是applet 主類代碼:
import java.applet.Applet;
import java.sql. *;
import java.awt. *;
public class WebGraph extends Applet {
  GraphPost graphPost;
public void init() {
   try{
     Color color=new Color(20,20,230);
     Class.forName("sun.jdbc.odbc.JdbcOdbcdriver");
// 注冊驅動程序
graphPost=new GraphPost(size(),30,color,0.3f);
// 初始化graphPost 對象
    }
  catch(Exception e){
  System.out.println("n" +“init error" +e.getMessage());
 }
 }
 public void start(){
  try{
  ResultSet rs;
  String dSourName="FoxPro Files";
  String sqlStr="select *FROM TEST";
  rs=creatResultSet(dSourName,sqlStr);
  // 從數據庫中提取數據
  graphPost.setResult(rs); 
  // 把查詢結果發送給graphPost
  rs.close();
}
catch(Exception e){
  System.out.println("n" +“start error"
  +e.getMessage());
   }
}
public void paint(Graphics g){
 graphPost.draw(g); 
  // 調用graphPost 的draw 方法繪制柱狀統計圖
}
private static ResultSet creatResultSet(String dStr,String sqlStr) 
  throws SQLException{
  / *根據給定的數據源和sql
   查詢語句讀取數據庫*/
   String datasr=dStr;
   Connection con1=DriverManager.getConnection
("jdbc:odbc:" +datasr); // 連接數據庫
   Statement stmt1=con1.createStatement();
   return stmt1.executeQuery(sqlStr);// 執行查詢
  }
}

關于“怎么用Java在Web頁面上輸出統計圖”的內容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業相關的知識,可以關注億速云行業資訊頻道,小編每天都會為大家更新不同的知識點。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

庐江县| 光山县| 安庆市| 安龙县| 临桂县| 呈贡县| 来凤县| 黔西县| 界首市| 松滋市| 南和县| 常熟市| 渭南市| 夏河县| 南靖县| 金阳县| 罗城| 南雄市| 托里县| 绍兴市| 社会| 山西省| 托克托县| 柘城县| 琼海市| 兴义市| 从化市| 林州市| 九台市| 乡宁县| 星座| 贡觉县| 南平市| 余姚市| 沙河市| 格尔木市| 桃园市| 米易县| 特克斯县| 宜城市| 湘西|