Debemos copiar desde la carpeta lib de nuestro IReport, los siguientes jar :
itext-1.3.1.jar
jasperreports-2.0.4.jar
jasperreports-extensions-1.3.1.jar
poi-2.5.1-final-20040804
Luego pegarlos en la carpeta WEB-INF/lib de nuestro proyecto web.
En la lista podemos ver las librerias itext y el poi, estas librerias nos serviran para los reportes en pdf y excel respectivamente.
Debemos crear una carpeta dentro del WEB-INF, su nombre sera "reports", al interior de este carpeta pegaremos el archivo mi_reporte_javix.jasper (recuerde que este archivo lo generamos en el anterior articulo), este archivo se encuentra en la carpeta principal de su IReport.
Vamos al proyecto ViewController darle doble clic y agregaremos las librerias,darle clic al boton add Jar/Directory
Finalmente quedaria de esta manera:
Ahora vamos al faces-config.xml y diseñamos la siguiente navegacion entre paginas:
Tenemos dos paginas , la navegacion tiene el nombre de "dialog:jspreporte".
El diseño de la pagina index.jsp seria el siguiente:
Modifique las siguientes propiedades del boton "Generar Reporte":
useWindow="true"
windowHeight="800"
windowWidth="600"
Debe capturar el valor del selectonechoice que almacena el area luego cargarlo como variable session a idarea.
Programacion del boton "generar reporte" en el backing:
FacesContext context = javax.faces.context.FacesContext.getCurrentInstance();
HttpSession session = (HttpSession) context.getExternalContext().getSession(false);
session.setAttribute("idarea",idarea);
return "dialog:jspreporte";
Para generar el reporte necesita una conexion a una base de datos, en este caso se puede tomar la conexion existente del datasource original, o tambien crear una propia conexion a la base de datos, optaremos por esta opcion, entonces debera crear una clase "OracleDBConn".
package com.javix.pe.model.db;
import java.sql.Connection;
import java.sql.DriverManager;
import javax.naming.InitialContext;
import javax.sql.DataSource;
public class OracleDBConn {
/**
*Registramos el driver
*/
static {
try {
Class.forName("oracle.jdbc.driver.OracleDriver");
} catch (Exception e) {
System.out.println("Ocurrió un problema con el driver\n" + e);
}
}
/**
* Obtiene una conexión a la Base de Datos.
*/
public Connection getConexion() {
Connection connection = null;
try {
connection = DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:ORCL","blog","blog");
} catch (Exception e) {
System.out.println("Ocurrió un problema al obtener la conexión\n" + e);
}
return connection;
}
}
Continuando ya se tiene el archivo reporte, la clase de conexion, ahora falta la pagina que soportara el reporte, para este ejemplo ejecutaremos un reporte en pdf y al dar clic al boton "generar reporte" automaticamente debera aparecer una ventana emergente mostrando un pdf con la informacion solicitada.
Para ello debemos programar la pagina reporte.jsp con el siguiente codigo:
"http :// www . w3 . org/TR/html4/loose.dtd">
<%@ page import="net.sf.jasperreports.engine.*" %>
<%@ page import="net.sf.jasperreports.engine.design.*" %>
<%@ page import="net.sf.jasperreports.engine.data.*"%>
<%@ page import="net.sf.jasperreports.engine.export.*"%>
<%@ page import="net.sf.jasperreports.engine.util.*"%>
<%@ page import="net.sf.jasperreports.view.*"%>
<%@ page import="net.sf.jasperreports.view.save.*"%>
<%@ page import="java.sql.*"%>
<%@ page import="java.util.*" %>
<%@ page import="java.io.*" %>
<%@ page contentType="text/html;charset=windows-1252"%>
Reporte Javier Calizaya!
<%
try{
com.javix.pe.model.db.OracleDBConn objDBConn =new com.javix.pe.model.db.OracleDBConn() ;
Connection conn = null ;
conn = objDBConn.getConexion();
System.setProperty("jasper.reports.compile.class.path",application.getRealPath("/WEB-INF/lib/jasperreports-2.0.4.jar") +
System.getProperty("path.separator") +
application.getRealPath("/WEB-INF/classes/")
);
System.setProperty(
"jasper.reports.compile.temp",
application.getRealPath("/reports/")
);
File reportFile = new File(application.getRealPath("/reports/mi_reporte_javix.jasper"));
Map parameters = new HashMap();
javax.faces.context.FacesContext context = javax.faces.context.FacesContext.getCurrentInstance();
parameters.put("idlocal",session.getAttribute("idarea").toString());
byte[] bytes =JasperRunManager.runReportToPdf(reportFile.getPath(),parameters,conn);
response.setContentType("application/pdf");
response.setContentLength(bytes.length);
ServletOutputStream ouputStream = response.getOutputStream();
ouputStream.write(bytes, 0, bytes.length);
ouputStream.flush();
ouputStream.close();
}catch (JRException e)
{System.out.println("Error:" +e.getMessage());}
catch (Exception e)
{
e.printStackTrace();
System.out.println("Error2:" +e.getMessage());
}
%>
Ejecutar la pagina index.jsp:
Fuente: http://javixoracle.blogspot.com/