JSP调用JavaBean在网页上动态生成柱状图

本文介绍一种使用JSP和JavaBean动态生成柱状图的方法。通过从文本文件读取数据并绘制到图片上,实现图表内容随数据变化而更新。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

        我们经常要在网页看到一些动态更新的图片,最常见的莫过于股票的K线图,本文试图通过一个简单的实例,向大家展示如何通过JSP 调用JavaBean在网页上动态生成柱状图。   
第一步:创建一个Java Bean用来生成jpg文件   
源程序如下:
//生成图片的 Java Bean
import java.io.*;
import java.util.*;
import com.sun.image.codec.jpeg.*;
import java.awt.image.*;
import java.awt.*;
public class ChartGraphics {  
       BufferedImage image;  
       public void createImage(String fileLocation) {   
            try {    
                   FileOutputStream fos = new FileOutputStream(fileLocation);    
                   BufferedOutputStream bos = new BufferedOutputStream(fos);    
                   JPEGImageEncoder encoder = JPEGCodec.createJPEGEncoder(bos);    
                   encoder.encode(image);    
                   bos.close();   
              } catch(Exception e) {    
                        System.out.println(e);   
              }  
         }  
       public void graphicsGeneration(int h1,int h2,int h3,int h4,int h5) {   
              final int X=10;   
              int imageWidth = 300;//图片的宽度   
              int imageHeight = 300;//图片的高度   
              int columnWidth=30;//柱的宽度   
              int columnHeight=200;//柱的最大高度   
              ChartGraphics chartGraphics = new ChartGraphics();   
              chartGraphics.image = new BufferedImage(imageWidth, imageHeight,                                                            BufferedImage.TYPE_INT_RGB);   
              Graphics graphics = chartGraphics.image.getGraphics();   
              graphics.setColor(Color.white);   
              graphics.fillRect(0,0,imageWidth,imageHeight);   
              graphics.setColor(Color.red);   
              graphics.drawRect(X+1*columnWidth, columnHeight-h1, columnWidth, h1);   
              graphics.drawRect(X+2*columnWidth, columnHeight-h2, columnWidth, h2);   
              graphics.drawRect(X+3*columnWidth, columnHeight-h3, columnWidth, h3);   
              graphics.drawRect(X+4*columnWidth, columnHeight-h4, columnWidth, h4);   
              graphics.drawRect(X+5*columnWidth, columnHeight-h5, columnWidth, h5);                 chartGraphics.createImage("D://temp//chart.jpg");  
         }
}   
解释:
createImage(String fileLocation)方法用于创建JPG图片,参数fileLocation为文件路径   
graphicsGeneration(int h1,int h2,int h3,int h4,int h5)方法用于绘出图片的内容,参数h1……h5为每一个长方形的高度   
第二步:
创建另一个Java Bean从文本文件中读取数据(每一个长方形的高度),在实际应用中数据存储在Oracle数据库中   源程序如下:
//读取Text文件中数据的 Java Bean
import java.io.*;
public class GetData {  
          int heightArray[] = new int[5];  
          public int[] getHightArray() {   
                 try {    
                     RandomAccessFile randomAccessFile = new RandomAccessFile                                                              ("d://temp//ColumnHeightArray.txt","r");    
                     for (int i=0;i<5;i++)    
                     {     
                          heightArray[i] = Integer.parseInt(randomAccessFile.readLine());    
                     }   
                  } catch(Exception e) {    
                          System.out.println(e);   
                  }   
                 return heightArray;  
          }
}   
解释:
getHightArray()用于从文本中读取数据,将文本中的String类型转换为int类型,并以数组类型返回。   
第三步:创建JSP文件   
源程序如下:
<%@ page import="ChartGraphics" %>
<%@ page import="GetData" %>
<jsp:useBean id="cg" class="ChartGraphics"/>
<jsp:useBean id="gd" class="GetData"/>
<%! int height[]=new int[5]; %>
<%
        height=gd.getHightArray(); 
        cg.graphicsGeneration(height[0],height[1],height[2],height[3],height[4]);
%>
<html>
<body>
     <img src="d:/temp/chart.jpg"></img>
</body>
</html>   
解释:
JSP首先调用Bean (GetData..class)读取文件中的数据,再调用Bean(ChartGraphics.class)生成图片,最后显示图片。   

结束语:
由于文本(ColumnHeightArray.txt)中的数据可以随时变化,因此生成的图片中的5个长方形的高度是随之变化的,从而实现了图片的动态生成.该设计思想还可以用于制作网站的投票系统。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值