Freqüentemente vemos algumas imagens atualizadas dinamicamente em páginas da web, a mais comum delas é o gráfico de linha K de ações. Este artigo tenta usar um exemplo simples para mostrar como chamar JavaBean por meio de JSP para gerar dinamicamente um histograma na página da web. .
Antecedentes: Recentemente, quando desenvolvi um projeto para um escritório de estatística, estive envolvido no problema de geração dinâmica de imagens em uma página da web. Levei um dia e finalmente resolvi para ajudar todos a evitar desvios ao encontrar o. mesmo problema no futuro, irei agora. As ideias de design e o código-fonte são publicados para que todos possam compartilhar. O código a seguir foi testado com êxito no Windows 2000 e o servidor de aplicativos da Web usa o Jrun3.0 da Allaire.
Etapa 1: Crie um Java Bean para gerar arquivos jpg
O programa fonte é o seguinte:
//Java Bean para gerar imagens.
//Autor: Cui Guanyu
//Data:24/08/2001
importar java.io.*;
importar java.util.*;
importar com.sun.image.codec.jpeg.*;
importar java.awt.image.*;
importar java.awt.*;
classe pública ChartGraphics {
Imagem BufferedImage;
public void createImage(String fileLocation) {
tentar {
FileOutputStream fos = new FileOutputStream(fileLocation);
BufferedOutputStream bos = new BufferedOutputStream(fos);
Codificador JPEGImageEncoder = JPEGCodec.createJPEGEncoder(bos);
codificador.encode(imagem);
bos.close();
} catch(Exceção 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; //A largura da imagem int imageHeight = 300; //A altura máxima da coluna
ChartGraphics
;chartGraphics = new ChartGraphics();
chartGraphics.image = novo BufferedImage(imageWidth, imageHeight, BufferedImage.TYPE_INT_RGB);
Gráficos gráficos = chartGraphics.image.getGraphics();
gráficos.setColor(Color.branco);
gráficos.fillRect(0,0,imageWidth,imageHeight);
gráficos.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");
}
}
Explicação: O método createImage(String fileLocation) é usado para criar uma imagem JPG. O parâmetro fileLocation é o caminho do arquivo.
O método graphicsGeneration(int h1, int h2, int h3, int h4, int h5) é usado para desenhar o conteúdo. da imagem. Os parâmetros h1...h5 Passo 2 para a altura de cada retângulo
: Crie outro Java Bean para ler os dados do arquivo de texto (a altura de cada retângulo). banco de dados
O programa de origem é o seguinte:
//Lê o arquivo de texto Java Bean para obter dados.
//Autor: Cui Guanyu
//Data:24/08/2001
importar java.io.*;
classe pública GetData {
int heightArray[] = new int[5];
public int[] getHightArray() {
tentar {
RandomAccessFile randomAccessFile = new RandomAccessFile ("d:\temp\ColumnHeightArray.txt","r");
para (int i=0;i<5;i++)
{
heightArray[i] = Integer.parseInt(randomAccessFile.readLine());
}
}
catch(Exceção e) {
System.out.println(e);
}
retornar alturaArray;
}
}
Explicação: getHightArray() é usado para ler dados de texto, converter o tipo String no texto para o tipo int e retorná-lo como um tipo array.
Etapa 3: Crie oprograma de origem
do arquivo JSP
da seguinte maneira:
<%@ page import="Gráficos" %>
<%@ importação de página = "GetData" %>
<jsp:useBean id="cg" class="ChartGraphics"/>
<jsp:useBean id="gd" class="GetData"/>
<%!
int altura[]=new int[5];
%>
<%
altura=gd.getHightArray();
cg.graphicsGeneration(altura[0],altura[1],altura[2],altura[3],altura[4]);
%>
<html>
<corpo>
<img src="d:tempchart.jpg"></img>
</corpo>
</html>
Explicação: JSP primeiro chama Bean (GetData..class) para ler os dados no arquivo, depois chama Bean (ChartGraphics.class) para gerar a imagem e, finalmente, exibe a imagem.
Conclusão: Como os dados no texto (ColumnHeightArray.txt) podem mudar a qualquer momento, a altura dos cinco retângulos na imagem gerada muda de acordo, realizando assim a geração dinâmica da imagem. Esta ideia de design também pode ser usada para fazer. sistema de votação de sites.