domingo, 24 de mayo de 2009

Diagrama de barras en JSP

Este es parecido al anterior es un poquito mas complejo, para esto debemos conocer:
1) la estructura de una aplicacion JSP. 2)entender lo que es un Servlet y como se usa.
lo importante del primer punto es que en toda aplicacion JSP hay una carpeta WEB-INF, weno dentro de esta creamos un archivo llamado web.xml, los archivos xml lo usaremos para definir variables o parametros...
esta es la estructura del archivo web.xml

<web-app>

<servlet>
<servlet-name>Imagen</servlet-name>
<servlet-class>jfc.Imagen</servlet-class>
</servlet>

<servlet-mapping>

<servlet-name>Imagen</servlet-name>
<url-pattern>/servlet/Imagen</url-pattern>
</servlet-mapping>
</web-app>

Definiendo el servlet:
<servlet> // esta es una etiqueta como en html para declarar un serlet
<servlet-name>Imagen</servlet-name> Imagen //este es el nombre del servlet
<servlet-class>jfc.Imagen</servlet-class> jfc.Imagen// y esta es la direccion de la clase
</servlet>// cerramos el servlet
el nombre es la forma como lo llamaremos
y la clase es la direccion completa de la clase
osea paquete1.paquete2.paquete3.Claase
Haciendo el mapeo:
<servlet-mapping>
<servlet-name>Imagen</servlet-name>
<url-pattern>/servlet/Imagen</url-pattern>
</servlet-mapping>
</web-app>
Imagen el nombre del Servlet debe ser el mismo que escribimos en la etiqueta sevlet
/servlet/Imagen el camino esto hace referencia a la forma como lu llamaremos dentro de la pagina jsp weno con eso hemos terminado con el web.xml ahora creamos una clase pues como halla arriba dijimos que se llamaba Imagen y estaba en el paquete jfc aqui esta el codigo:

package jfc;
import java.io.IOException;
 import java.io.OutputStream;
 import javax.servlet.ServletException;
 import javax.servlet.http.HttpServlet;
 import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletResponse;
 import org.jfree.chart.ChartFactory;
 import org.jfree.chart.ChartUtilities;
 import org.jfree.chart.JFreeChart;
 import org.jfree.chart.plot.PlotOrientation;
 import org.jfree.data.category.DefaultCategoryDataset;
public class Imagen extends HttpServlet {
public Imagen() {}
public void doPost(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {
 doGet(request,response);
 }
 public void doGet(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {
 OutputStream out = response.getOutputStream();
 try {
 DefaultCategoryDataset dataset = new DefaultCategoryDataset();
 int i = 0;
 for (i = 0; i<15;i++){
 dataset.addValue((int)(Math.random()*100) , "Ventas", ""+i);
 }
 JFreeChart chart = ChartFactory.createBarChart("Tabla de Ventas", "Fecha", "Cantidad", dataset, PlotOrientation.VERTICAL, true, true, true);
 response.setContentType("image/png");
 ChartUtilities.writeChartAsPNG(out, chart, 700, 400);
 }catch (Exception e) {
 System.err.println(e.toString());
 } finally {
 out.close();
 }
 }

 }


Esto es parecido a lo que hemos hecho anteriromente pero ahora temenos:
1) extends HttpServlet //extedemos de HttpServlet
2) public void doPost(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {
doGet(request,response);
}
3) public void doGet(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {.....
4) creamos el diagrama ya he explicado eso en otro entrada 5)OutputStream out = response.getOutputStream(); sacamos la salida 6)response.setContentType("image/png"); decimos que pondremos una imagen png
7)ChartUtilities.writeChartAsPNG(out, chart, 700, 400); y escribimos el char en la salida la salida es una pagina nueva que será escrita asi como se escriben imagenes se puede escribir lo que sea
el resto es la interfaz una pagina jsp que llame a el servlet

<%@page contentType="text/html" pageEncoding="UTF-8"%> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">

<html>

<head>

<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">

<title>Ejemplo JFreeChar JSP</title> </head> <body> <a href="servlet/Imagen">imagen</a> </body> </html>

debe verse así

No hay comentarios:

Publicar un comentario

DEJA UN COMENTARIO...
SI NO LO DICES NO LO SE

COMENTARIOS, DUDAS... SI NO LO DICES NO LO SE