Wir sehen oft einige dynamisch aktualisierte Bilder auf Webseiten, das häufigste davon ist das Aktien-K-Liniendiagramm. In diesem Artikel wird versucht, Ihnen anhand eines einfachen Beispiels zu zeigen, wie Sie JavaBean über JSP aufrufen, um dynamisch ein Histogramm auf der Webseite zu generieren .
Hintergrund: Als ich kürzlich ein Projekt für ein Statistikbüro entwickelte, war ich mit dem Problem der dynamischen Generierung von Bildern auf einer Webseite beschäftigt. Es hat einen Tag gedauert und ich habe es schließlich gelöst, um allen zu helfen, Umwege zu vermeiden Das gleiche Problem werde ich auch in Zukunft haben. Die Designideen und der Quellcode werden veröffentlicht, damit jeder sie teilen kann. Der folgende Code wurde erfolgreich unter Windows 2000 getestet und der Webanwendungsserver verwendet Allaires Jrun3.0.
Schritt 1: Erstellen Sie ein Java Bean zum Generieren von JPG-Dateien.
Das Quellprogramm lautet wie folgt:
//Java Bean zum Generieren von Bildern
//Autor: Cui Guanyu
//Datum:24.08.2001
java.io.* importieren;
import java.util.*;
import com.sun.image.codec.jpeg.*;
import java.awt.image.*;
import java.awt.*;
öffentliche Klasse ChartGraphics {
BufferedImage-Bild;
public void createImage(String fileLocation) {
versuchen {
FileOutputStream fos = new FileOutputStream(fileLocation);
BufferedOutputStream bos = new BufferedOutputStream(fos);
JPEGImageEncoder-Encoder = JPEGCodec.createJPEGEncoder(bos);
Encoder.encode(image);
bos.close();
} Catch(Ausnahme 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; //Die Breite des Bildes int imageHeight = 300; //Die Höhe des Bildes int columnsHeight=200; //Die maximale Höhe der Spalte
ChartGraphics chartGraphics = new ChartGraphics();
chartGraphics.image = new BufferedImage(imageWidth, imageHeight, BufferedImage.TYPE_INT_RGB);
Grafik 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");
}
}
Erläuterung: Die Methode „createImage(String fileLocation)“ wird zum Erstellen eines JPG-Bildes verwendet. Der Parameter „fileLocation“ ist der Dateipfad.
Die Methode „graphicsGeneration(int h1, int h2, int h3, int h4, int h5)“ wird zum Zeichnen des Inhalts verwendet des Bildes. Schritt 2 für die Höhe jedes Rechtecks
: Erstellen Sie ein weiteres Java Bean, um Daten aus der Textdatei zu lesen (die Höhe jedes Rechtecks). Datenbank.
Das Quellprogramm lautet wie folgt:
//Textdatei Java Bean für Daten lesen
//Autor: Cui Guanyu
//Datum:24.08.2001
java.io.* importieren;
öffentliche Klasse GetData {
int heightArray[] = new int[5];
public int[] getHightArray() {
versuchen {
RandomAccessFile randomAccessFile = new RandomAccessFile ("d:\temp\ColumnHeightArray.txt", "r");
für (int i=0;i<5;i++)
{
heightArray[i] = Integer.parseInt(randomAccessFile.readLine());
}
}
Catch(Ausnahme e) {
System.out.println(e);
}
return heightArray;
}
}
Erläuterung: getHightArray() wird verwendet, um Daten aus Text zu lesen, den String-Typ im Text in den Typ int zu konvertieren und ihn als Array-Typ zurückzugeben.
Schritt 3: Erstellen Sie das JSP-Dateiquellprogramm
wie folgt:
<%@ 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>
<Körper>
<img src="d:tempchart.jpg"></img>
</Körper>
</html>
Erläuterung: JSP ruft zuerst Bean (GetData..class) auf, um die Daten in der Datei zu lesen, ruft dann Bean (ChartGraphics.class) auf, um das Bild zu generieren, und zeigt schließlich das Bild an.
Fazit: Da sich die Daten im Text (ColumnHeightArray.txt) jederzeit ändern können, ändert sich die Höhe der fünf Rechtecke im generierten Bild entsprechend, wodurch die dynamische Generierung des Bildes realisiert werden kann Abstimmungssystem für Websites.