Мы часто видим на веб-страницах динамически обновляемые изображения, наиболее распространенным из которых является стандартная K-линейная диаграмма. В этой статье делается попытка использовать простой пример, чтобы показать вам, как вызвать JavaBean через JSP для динамического создания гистограммы на веб-странице. .
Предыстория: Недавно, когда я разрабатывал проект для статистического бюро, я занимался проблемой динамического создания изображений на веб-странице. Мне потребовался день, и я наконец решил ее, чтобы помочь всем избежать обходных путей при столкновении. та же проблема в будущем, я сейчас это сделаю. Идеи дизайна и исходный код опубликованы, чтобы каждый мог ими поделиться. Следующий код был успешно протестирован в Windows 2000, а сервер веб-приложений использует Jrun3.0 компании Allaire.
Шаг 1. Создайте Java Bean для создания файлов jpg.
Исходная программа выглядит следующим образом:
//Java Bean для создания изображений.
//Автор: Цуй Гуаньюй
//Дата:24 августа 2001 г.
импортировать java.io.*;
импортировать java.util.*;
импортировать com.sun.image.codec.jpeg.*;
импортировать java.awt.image.*;
импортировать
общественный класс ChartGraphics {
Изображение BufferedImage;
public void createImage (String fileLocation) {
пытаться {
FileOutputStream fos = новый FileOutputStream (fileLocation);
BufferedOutputStream бос = новый BufferedOutputStream (fos);
Кодер JPEGImageEncoder = JPEGCodec.createJPEGEncoder(bos);
encoder.encode(изображение);
бос.закрыть();
} catch(Исключение е) {
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 columnsWidth=30; //Ширина столбца int columnsHeight=200; //Максимальная высота столбца
ChartGraphics; chartGraphics = новый ChartGraphics();
chartGraphics.image = новый BufferedImage(imageWidth, imageHeight, BufferedImage.TYPE_INT_RGB);
Графика Graphics =chartGraphics.image.getGraphics();
графики.setColor(Цвет.белый);
графики.fillRect(0,0,imageWidth,imageHeight);
графики.setColor(Цвет.красный);
Graphics.drawRect(X+1*columnWidth, columnsHeight-h1, columnsWidth, h1);
Graphics.drawRect(X+2*columnWidth, columnsHeight-h2, columnsWidth, h2);
Graphics.drawRect(X+3*columnWidth, columnsHeight-h3, columnsWidth, h3);
Graphics.drawRect(X+4*columnWidth, columnsHeight-h4, columnsWidth, h4);
Graphics.drawRect(X+5*columnWidth, columnsHeight-h5, columnsWidth, 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 Шаг 2 для высоты каждого прямоугольника
: Создайте еще один Java Bean для чтения данных из текстового файла (высота каждого прямоугольника). В реальных приложениях данные хранятся в Oracle. База данных.
Исходная программа выглядит следующим образом:
//Чтение текстового файла Java Bean для данных.
//Автор: Цуй Гуаньюй
//Дата:24 августа 2001 г.
импортировать java.io.*;
общественный класс GetData {
int heightArray[] = новый int[5];
public int[] getHightArray() {
пытаться {
RandomAccessFile randomAccessFile = новый RandomAccessFile ("d:\temp\ColumnHeightArray.txt","r");
для (int i=0;i<5;i++)
{
heightArray[i] = Integer.parseInt(randomAccessFile.readLine());
}
}
catch(Исключение е) {
System.out.println(e);
}
вернуть массив высоты;
}
}
Объяснение: getHightArray() используется для чтения данных из текста, преобразования типа String в тексте в тип int и возврата его как типа массива.
Шаг 3. Создайте
исходную программу файла JSP следующим образом:
<%@ page import="ChartGraphics" %>
<%@ page import="GetData" %>
<jsp:useBean id="cg" class="ChartGraphics"/>
<jsp:useBean id="gd" class="GetData"/>
<%!
int height[]=новый int[5];
%>
<%
высота = gd.getHightArray();
cg.graphicsGeneration(высота[0],высота[1],высота[2],высота[3],высота[4]);
%>
<html>
<тело>
<img src="d:tempchart.jpg"></img>
</тело>
</html>
Объяснение: JSP сначала вызывает Bean (GetData..class) для чтения данных в файле, затем вызывает Bean (ChartGraphics.class) для создания изображения и, наконец, отображает изображение.
Вывод: поскольку данные в тексте (ColumnHeightArray.txt) могут измениться в любой момент, соответственно изменяется высота пяти прямоугольников в сгенерированном изображении, реализуя тем самым динамическую генерацию изображения. Эту дизайнерскую идею также можно использовать. система голосования на сайтах.