iis服务器助手广告广告
返回顶部
首页 > 资讯 > 精选 >怎么用Java在Web页面上输出统计图
  • 652
分享到

怎么用Java在Web页面上输出统计图

2023-06-03 03:06:12 652人浏览 安东尼
摘要

这篇文章主要介绍“怎么用Java在WEB页面上输出统计图”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“怎么用Java在Web页面上输出统计图”文章能帮助大家解决问题。  在Inte.net 和Int

这篇文章主要介绍“怎么用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页面上输出统计图”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识,可以关注编程网精选频道,小编每天都会为大家更新不同的知识点。

--结束END--

本文标题: 怎么用Java在Web页面上输出统计图

本文链接: https://www.lsjlt.com/news/232548.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • 怎么用Java在Web页面上输出统计图
    这篇文章主要介绍“怎么用Java在Web页面上输出统计图”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“怎么用Java在Web页面上输出统计图”文章能帮助大家解决问题。  在Inte.NET 和Int...
    99+
    2023-06-03
  • web页面怎么实现echarts统计图的打印导出
    这篇文章主要讲解了“web页面怎么实现echarts统计图的打印导出”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“web页面怎么实现echarts统计图的打...
    99+
    2022-10-19
  • vue怎么在页面上输出html代码效果
    这篇文章主要介绍“vue怎么在页面上输出html代码效果”,在日常操作中,相信很多人在vue怎么在页面上输出html代码效果问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”vue怎么在页面上输出html代码效果...
    99+
    2023-06-20
  • 怎么在同一页面显示多个JavaScript统计图表
    本篇内容主要讲解“怎么在同一页面显示多个JavaScript统计图表”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“怎么在同一页面显示多个JavaScript统计...
    99+
    2022-10-19
  • CSS怎么使用像素来在页面上定位背景图像
    这篇文章主要为大家展示了“CSS怎么使用像素来在页面上定位背景图像”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“CSS怎么使用像素来在页面上定位背景图像”这篇文...
    99+
    2022-10-19
  • css怎么使用百分比来在页面上定位背景图像
    这篇文章主要为大家展示了“css怎么使用百分比来在页面上定位背景图像”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“css怎么使用百分比来在页面上定位背景图像”这...
    99+
    2022-10-19
  • YOLOv5怎么实现在图片上显示统计出单一检测目标的个数
    这篇文章主要介绍“YOLOv5怎么实现在图片上显示统计出单一检测目标的个数”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“YOLOv5怎么实现在图片上显示统计出单一检测目标的个数”文章能帮助大家解决问...
    99+
    2023-07-05
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作