Nous voyons souvent des images mises à jour dynamiquement sur les pages Web, la plus courante étant le graphique boursier K-line. Cet article tente d'utiliser un exemple simple pour vous montrer comment appeler JavaBean via JSP pour générer dynamiquement un histogramme sur la page Web. .
Contexte : Lorsque je développais récemment un projet pour un bureau de statistiques, j'étais impliqué dans le problème de la génération dynamique d'images sur une page Web. Cela m'a pris une journée et je l'ai finalement résolu afin d'aider tout le monde à éviter les détours lorsqu'il rencontre le problème. même problème à l'avenir, je le ferai maintenant. Les idées de conception et le code source sont publiés pour que tout le monde puisse les partager. Le code suivant a été testé avec succès sur Windows 2000 et le serveur d'applications Web utilise Jrun3.0 d'Allaire.
Étape 1 : Créez un Java Bean pour générer des fichiers jpg
Le programme source est le suivant :
//Java Bean pour générer des images.
//Auteur : Cui Guanyu
//Date : 2001-08-24
importer java.io.* ;
importer java.util.* ;
importer com.sun.image.codec.jpeg.* ;
importer java.awt.image.* ;
importer java.awt.* ;
classe publique ChartGraphics {
Image BufferedImage ;
public void createImage (String fileLocation) {
essayer {
FileOutputStream fos = new FileOutputStream(fileLocation);
BufferedOutputStream bos = new BufferedOutputStream(fos);
Encodeur JPEGImageEncoder = JPEGCodec.createJPEGEncoder(bos);
encoder.encode(image);
bos.close();
} catch(Exception e) {
System.out.println(e);
}
}
public void graphiquesGeneration(int h1,int h2,int h3,int h4,int h5) {
final int X=10;
;
//La largeur de l'image int imageHeight = 300; //La hauteur de l'image int columnWidth=30; //La largeur de la colonne int columnHeight=200;
chartGraphics = new ChartGraphics();
chartGraphics.image = new BufferedImage (imageWidth, imageHeight, BufferedImage.TYPE_INT_RGB);
Graphiques graphiques = chartGraphics.image.getGraphics();
graphiques.setColor(Color.white);
graphiques.fillRect(0,0,imageWidth,imageHeight);
graphiques.setColor(Color.red);
graphiques.drawRect(X+1*columnWidth, columnHeight-h1, columnWidth, h1);
graphiques.drawRect(X+2*columnWidth, columnHeight-h2, columnWidth, h2);
graphiques.drawRect(X+3*columnWidth, columnHeight-h3, columnWidth, h3);
graphiques.drawRect(X+4*columnWidth, columnHeight-h4, columnWidth, h4);
graphiques.drawRect(X+5*columnWidth, columnHeight-h5, columnWidth, h5);
chartGraphics.createImage("D:\temp\chart.jpg");
}
}
Explication : La méthode createImage(String fileLocation) est utilisée pour créer une image JPG. Le paramètre fileLocation est le chemin du fichier.
La méthode graphiquesGeneration(int h1, int h2, int h3, int h4, int h5) est utilisée pour dessiner le contenu. de l'image. Les paramètres h1...h5 Étape 2 pour la hauteur de chaque rectangle
: Créez un autre Java Bean pour lire les données du fichier texte (la hauteur de chaque rectangle). Dans les applications actuelles, les données sont stockées dans Oracle. base de données
Le programme source est le suivant :
//Lire le fichier texte Java Bean pour les données.
//Auteur : Cui Guanyu
//Date :2001-08-24
importer java.io.* ;
classe publique GetData {
int heightArray[] = new int[5];
public int[] getHightArray() {
essayer {
RandomAccessFile randomAccessFile = nouveau RandomAccessFile ("d:\temp\ColumnHeightArray.txt","r");
pour (int i=0;i<5;i++)
{
heightArray[i] = Integer.parseInt(randomAccessFile.readLine());
}
}
capture (Exception e) {
System.out.println(e);
}
retourner heightArray ;
}
}
Explication : getHightArray() est utilisé pour lire les données du texte, convertir le type String dans le texte en type int et le renvoyer sous forme de type tableau.
Étape 3 : Créez le
programme source du fichier JSP comme suit :
<%@ page import="Graphiques graphiques" %>
<%@ page import="GetData" %>
<jsp:useBean id="cg" class="ChartGraphics"/>
<jsp:useBean id="gd" class="GetData"/>
<% !
int hauteur[]=nouveau int[5];
%>
<%
hauteur=gd.getHightArray();
cg.graphicsGeneration(hauteur[0],hauteur[1],hauteur[2],hauteur[3],hauteur[4]);
%>
<html>
<corps>
<img src="d:tempchart.jpg"></img>
</corps>
</html>
Explication : JSP appelle d'abord Bean (GetData..class) pour lire les données du fichier, puis appelle Bean (ChartGraphics.class) pour générer l'image, et enfin affiche l'image.
Conclusion : étant donné que les données du texte (ColumnHeightArray.txt) peuvent changer à tout moment, la hauteur des cinq rectangles de l'image générée change en conséquence, réalisant ainsi la génération dynamique de l'image. Cette idée de conception peut également être utilisée pour créer. système de vote des sites Web.