我们经常要在网页看到一些动态更新的图片最常见的莫过于股票的K线图本文试图通过一个简单的实例向大家展示如何通过JSP 调用JavaBean在网页上动态生成柱状图
背景本人最近在为某统计局开发项目时涉及到在网页上动态生成图片的问题费了一天的时间终于搞定为帮助大家在以后遇到同样的问题时不走弯路现将设计思想及源代码公布出来与大家共勉以下代码在Windows成功测试通过Web应用服务器采用Allaire公司的Jrun
第一步创建一个Java Bean用来生成jpg文件
源程序如下
//生成图片的 Java Bean
//作者:崔冠宇
//日期:
import javaio*;
import javautil*;
import decjpeg*;
import javaawtimage*;
import javaawt*;
public class ChartGraphics {
BufferedImage image;
public void createImage(String fileLocation) {
try {
FileOutputStream fos = new FileOutputStream(fileLocation);
BufferedOutputStream bos = new BufferedOutputStream(fos);
JPEGImageEncoder encoder = JPEGCodeccreateJPEGEncoder(bos);
encoderencode(image);
bosclose();
} catch(Exception e) {
Systemoutprintln(e);
}
}
public void graphicsGeneration(int hint hint hint hint h) {
final int X=;
int imageWidth = ;//图片的宽度
int imageHeight = ;//图片的高度
int columnWidth=;//柱的宽度
int columnHeight=;//柱的最大高度
ChartGraphics chartGraphics = new ChartGraphics();
chartGraphicsimage = new BufferedImage(imageWidth imageHeight BufferedImageTYPE_INT_RGB);
Graphics graphics = chartGraphicsimagegetGraphics();
graphicssetColor(Colorwhite);
graphicsfillRect(imageWidthimageHeight);
graphicssetColor(Colorred);
graphicsdrawRect(X+*columnWidth columnHeighth columnWidth h);
graphicsdrawRect(X+*columnWidth columnHeighth columnWidth h);
graphicsdrawRect(X+*columnWidth columnHeighth columnWidth h);
graphicsdrawRect(X+*columnWidth columnHeighth columnWidth h);
graphicsdrawRect(X+*columnWidth columnHeighth columnWidth h);
chartGraphicscreateImage(D:\temp\chartjpg);
}
}
解释createImage(String fileLocation)方法用于创建JPG图片参数fileLocation为文件路径
graphicsGeneration(int hint hint hint hint h)方法用于绘出图片的内容参数h……h为每一个长方形的高度
第二步创建另一个Java Bean从文本文件中读取数据(每一个长方形的高度)在实际应用中数据存储在Oracle数据库中
源程序如下:
//读取Text文件中数据的 Java Bean
//作者:崔冠宇
//日期:
import javaio*;
public class GetData {
int heightArray[] = new int[];
public int[] getHightArray() {
try {
RandomAccessFile randomAccessFile = new RandomAccessFile (d:\temp\ColumnHeightArraytxtr);
for (int i=;i<;i++)
{
heightArray[i] = IntegerparseInt(randomAccessFilereadLine());
}
}
catch(Exception e) {
Systemoutprintln(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[];
%>
<%
height=gdgetHightArray();
cggraphicsGeneration(height[]height[]height[]height[]height[]);
%>
<html>
<body>
<img src=d: empchartjpg></img>
</body>
</html>
解释:JSP首先调用Bean (GetDataclass)读取文件中的数据再调用Bean(ChartGraphicsclass)生成图片最后显示图片
结束语由于文本(ColumnHeightArraytxt)中的数据可以随时变化因此生成的图片中的个长方形的高度是随之变化的从而实现了图片的动态生成该设计思想还可以用于制作网站的投票系统