sábado, marzo 05, 2011

Java - Aplicación Web, Carrito de Compras Parte V - Creación del Reporte


"Si usa algún código del siguiente tutorial, den el icono de ME GUSTA del Facebook que se encuentra en su mano derecha, para que se vuelva Seguidor del Blog y también comentenos que tal les pareció el tutorial"

1. Entorno


  • MySQL 5.1.
  • NetBeans IDE 6.9.1
  • Apache Tomcat
  • JDK 1.6.0 - 21
  • iReport-4.0.0

2. Introducción


Para realizar reportes en Java hay un programa que se llama iReport. Este programa se puede integrar muy facil a Netbeans o tenerlo instalado de forma separada. Yo recomiendo que lo instalen de forma separada, debido a que le da mas funcionalidades propias del programa. El iReport lo pueden bajar de aqui y pueden buscar en internet un poco de información mas detallada sobre esta herramienta.

3. Desarrollo


3.1. Diseñando el reporte

Lo primero que debe de hacer es diseñar el reporte en iReport, para eso les prepare el siguiente vídeo



Para llenar el reporte, hemos usado el código del procedimiento almacenado que se llama spF_Venta_All. Que creamos en la primera parte del tutorial.

3.2. Agregando el reporte al Netbans

Luego que diseñamos el reporte debemos de crear un carpeta dentro de nuestro proyecto en Netbeans que se llame "reportes". Para eso haces clic derecho en donde dice "Web Page" y nos vamos a la opción que dice New y seleccionamos Folder











De ahi debemos de copiar y pegar el reporte que hemos diseñado a esta carpeta













Y al final nuestra carpeta debería contener los siguientes archivos: reporteDeVentas.jasper y reporteDeVentas.jrxl













3.3. Agregando librerías

Tienen que agregar a su proyecto de Netbeans los siguientes jar


  • commons-beanutils-1.8.2
  • commons-collections-3.2.1
  • commons-digester-1.7
  • commons-logging-1.1
  • groovy-all-1.7.5
  • iText-2.1.7
  • iTextAsian
  • jasperreports-4.0.0
  • jasperreports-fonts-4.0.0
  • jasperreports-javaflow-4.0.0
  • jcommon-1.0.15
  • jfreechart-1.0.12
  • png-encoder-1.5


Estas librerías se encuentras en las carpetas dist o lib en donde se instalo el iReport iReport-4.0.0. para eso hacen clic derecho en su proyecto y se van a propiedades













De ahi se van a la opción "Libraries", presionan el botón "Add Jar" y agregan todos los jar anteriormente mencionados
















3.4. Creando el Servlet: Reporte

En nuestro paquete controlador debemos de crear un nuevo servlet que se llamara "Reporte". Este servlet sera el encargado de mostrar el reporte creado en formato PDF.



















Y este servlet tendra el siguiente codigo fuente:


package Controlador;

import Modelo.Conexion;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.OutputStream;
import java.sql.SQLException;
import java.util.HashMap;
import java.util.Map;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import net.sf.jasperreports.engine.JasperManager;
import net.sf.jasperreports.engine.JasperPrint;
import net.sf.jasperreports.engine.JasperReport;

//@autor Henry Joe Wong Urquiza
public class Reporte extends HttpServlet {

  @Override
  protected void doGet(HttpServletRequest request, HttpServletResponse response)
    throws ServletException, IOException {
    createReport(request, response);
  }

  @Override
  protected void doPost(HttpServletRequest request, HttpServletResponse response)
      throws ServletException, IOException {
      createReport(request, response);
  }

  protected void createReport(HttpServletRequest request, HttpServletResponse response)
      throws ServletException, IOException {
      //Mostrar el reporte en formato PDF
      response.setContentType("application/pdf");
      java.sql.Connection cn;
      try {
        cn = Conexion.getConexion();
        //El que obtiene el diseño del reporte
        JasperReport jasperReport = null;
        Map parameterMap = new HashMap();
        //La direccion del reporte
        String reporteJasper = request.getSession().getServletContext().getRealPath("reporte/reporteDeVentas.jasper");
        //Cargamos el reporte
        jasperReport = JasperManager.loadReport(new FileInputStream(reporteJasper));
        //Llenamos con informacion al reporte
        JasperPrint jasperPrint = JasperManager.fillReport(jasperReport, parameterMap, cn);
        OutputStream oS = null;
        oS = response.getOutputStream();
        //Y lo convertimos a PDF el reporte
        JasperManager.printReportToPdfStream(jasperPrint, oS);
        cn.close();
        } catch (SQLException ex) {
        ex.printStackTrace();
        } catch (Exception ex) {
        ex.printStackTrace();
        }

  }
}

3.5. Modificando la Vista

Luego para ponder invocar al reporte que hemos creado, ir cada JSP que tenemos y buscar la linea que dice


<a href="#">Reporte Producto</a>

Y reemplazarla por


<a href="Reporte">Reporte Producto</a>

4. Ejemplo de la Aplicación


4 comentarios:

Buena la investigacion para utilizar el IReport, felicitaciones Ing. Wong. Los tutoriales son muy entendibles, se agradece el esfuerzo de su blog. en la parte 3 de este carrito de compra, ah oviado el mensaje.jsp y verVentas.jsp.

Saludos Cordiales

Que bueno que les haya servido.

Estimado Ingeniero, ¿en qué parte se encuentra el resumen del proyecto?

Le comento que de todos los tutoriales que explican el patrón MVC, éste es el más claro y práctico que he leído.

Muchas gracias por compartir sus conocimientos.