Sei sulla pagina 1di 20

Contenido

1 Configurar iReportDesigner .................................................................................................... 2


1.1 Descargar iReport Designer ............................................................................................ 2
1.2 Descarga e instalar jre7................................................................................................... 2
1.3 Configurar ireport.conf ................................................................................................... 3
1.4 Ejecutar ireport Designer ................................................................................................ 4
1.5 Video de referencia para instalación de ireport Designer ................................................ 4
2 Librerías y dependencias ........................................................................................................ 5
2.1 Descargar librería Struts 2.5.20 ....................................................................................... 5
2.2 Descargar librería itext2.1.7.jar ....................................................................................... 5
2.3 Descargar librería mysql-connector-java-5.1.34.jar ......................................................... 5
2.4 Descargar librería Jasper Reports 5.6.0 ........................................................................... 5
3 Estructura del proyecto Web Struts2.5 ................................................................................... 6
3.1 Creación de paquetes, directorios................................................................................... 7
3.2 Agregar dependencias .jar al proyecto ............................................................................ 8
4 Archivos de configuración xml ................................................................................................ 9
4.1 Archivo struts.xml ........................................................................................................... 9
4.2 Archivo web.xml ........................................................................................................... 10
5 Crear un reporte en iReport Designer ................................................................................... 10
6 Implementación de clases .................................................................................................... 15
6.1 ListAction.class ............................................................................................................. 15
6.2 ReportAction.class ........................................................................................................ 15
6.3 ReportDAO.class ........................................................................................................... 16
6.4 ConexionBD.class.......................................................................................................... 17
6.5 listadoAlumnos.jsp ....................................................................................................... 17
7 Ejecución del proyecto ......................................................................................................... 18
8 Anexo................................................................................................................................... 19
Crear una aplicación web Java con Struts2.5 e iReport Designer
5.6.0

1 Configurar iReportDesigner
1.1 Descargar iReport Designer
El primer paso será descargar el iReport Designer desde el siguiente link:
https://community.jaspersoft.com/project/ireport-designer/releases

1.2 Descarga e instalar jre7


Para que iReport Designer funcione, primero debemos descargar e instalar jre7. Esto lo
pueden encontrar en el siguiente link: https://archive.org/download/jdk-7-windows-x86-
x64
1.3 Configurar ireport.conf
Una vez que hayamos instalado el jre7, abriremos el archivo de configuración “ireport.conf”
ubicado en la carpeta “iReport-5.6.0/etc” del directorio que acabamos de descomprimir.

Al abrir el archivo de configuración agregaremos la línea 12 donde se indicará el directorio


de instalación del jdk7, tal como se muestra a continuación
1.4 Ejecutar ireport Designer
Una vez configurado sólo nos queda ejecutar iReport Designer, para ello ejecutaremos el
archivo “ireport.exe” ubicado en el directorio “iReport-5.6.0/bin”

Si la configuración es correcta, luego de cargar nos mostrará la siguiente pantalla de inicio.

1.5 Video de referencia para instalación de ireport Designer


Se pueden apoyar en este video, en el cual se explica de la misma manera, como instalar y
configurar iReport Designer.

https://www.youtube.com/watch?v=oMz3uQq2PQg
2 Librerías y dependencias
2.1 Descargar librería Struts 2.5.20
Lo primero que vamos a realizar es descargar todas las librerías y dependencias requeridas
para nuestra aplicación struts2. Para ello iremos a la página oficial de struts2
https://struts.apache.org/download.cgi y descargaremos Struts 2.5.0.20 la versión “All
Dependencies”.

2.2 Descargar librería itext2.1.7.jar


Ahora debemos descargar la librería itext, requerida para renderizar el reporte en formato
pdf. Cabe mencionar que tiene que ser la versión 2.1.7 ya que con otras versiones se
presentan problemas de incompatbilidad.

Esta librería la pueden descargar del siguiente link:


http://www.java2s.com/Code/Jar/i/Downloaditext217jar.htm

2.3 Descargar librería mysql-connector-java-5.1.34.jar


Para el ejemplo utilizaremos mysql5 como motor de base de datos, para lo cual
descargaremos el driver desde el siguiente link:
https://mvnrepository.com/artifact/mysql/mysql-connector-java/5.1.34

2.4 Descargar librería Jasper Reports 5.6.0


Debemos descargar también la librería Jasper Report 5.6.0 la cual nos permitirá transformar
la plantilla de iReportDesigner en un formato report. Lo podemos descargar desde el
siguiente link:

https://sourceforge.net/projects/jasperreports/files/jasperreports/JasperReports%205.6.0/
3 Estructura del proyecto Web Struts2.5
A continuación, crearemos un proyecto del tipo “Dynamic Web Project”.

Hay que recordar que podemos elegir cualquier versión de apache tomcat, recomendado de
la versión 7 en adelante. Para este caso utilizaré “apache tomcat 8.5” con “Dynamic Web
Module 3.1.”

También recordar que es importante marcar el check para generar web.xml


3.1 Creación de paquetes, directorios
Para este proyecto, crearemos 3 paquetes y sus respectivas clases:

 edu.cibertec.action (Controlador)
 ReportAction.java
 edu.cibertec.dao (capa de datos)
 ReportDAO.java
 edu.cibertec.sql (capa de conexión a la base de datos)
 ConexionBD.java

Y un directorio:

 ReportTemplate (aquí guardaremos la plantilla generado con el iReport Designer)

Crearemos dentro del directorio Java “Resource/src”, un archivo de configuración:

 “struts.xml”

Finalmente, la estructura debe quedar como se muestra a continuación:


3.2 Agregar dependencias .jar al proyecto
Ahora, nos toca añadir las librerías a nuestro proyecto, para lo cual elegiremos los siguientes
archivos:

struts-2.5.20
asm-5.2.jar

asm-commons-5.2.jar

asm-tree-5.2.jar

commons-beanutils-1.9.3.jar

commons-collections-3.2.2.jar

commons-digester-2.1.jar

commons-fileupload-1.4.jar

commons-io-2.6.jar

commons-lang-2.4.jar

commons-lang3-3.8.1.jar

commons-logging-1.2.jar

freemarker-2.3.28.jar

javassist-3.20.0-GA.jar

log4j-api-2.11.1.jar

ognl-3.1.21.jar

struts2-core-2.5.20.jar

struts2-jasperreports-plugin-2.5.20.jar
Jasper Reports
jasperreports-5.6.0.jar
Mysql 5
mysql-connector-java-5.1.34.jar
iText
iText-2.1.7.jar
4 Archivos de configuración xml
A continuación, configuraremos los 2 archivos de configuración.

4.1 Archivo struts.xml


<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"
"http://struts.apache.org/dtds/struts-2.3.dtd">
<struts>
<constant name="struts.devMode" value="false" />
<package name="default" namespace="/" extends="struts-default">
<action name="StudentList" class="edu.cibertec.action.ListAction">
<result name="SUCCESS" type="dispatcher">/listadoAlumnos.jsp</result>
</action>
<action name="StudentReport" class="edu.cibertec.action.ReportAction">
<result name="SUCCESS" type="stream">
<param name="contentType">application/octet-stream</param>
<param name="inputName">fileInputStream</param>
<param
name="contentDisposition">attachment;filename="${pdfName}.pdf"</param>
<param name="bufferSize">1024</param>
</result>
</action>
</package>
</struts>

En este archivo de configuración hay que tener en cuenta lo siguiente:

 “StudentReport” será el alias que utilizaremos para acceder a nuestro controlador


y “edu.cibertec.action.ReportAction” es la clase donde se implementa el
controlador.

 Type=”Stream” indica que la salida de nuestra aplicación será un stream o flujo de


datos.

 contentType: application/octet-stream repsenta al mime type. Más información


en este link:
https://developer.mozilla.org/es/docs/Web/HTTP/Basics_of_HTTP/MIME_types/Lis
ta_completa_de_tipos_MIME
 fiIenputStream prepara el flujo de datos binario para el archivo.
 contentDisposition: attachment;filename, configurará como se debe disponer del
archivo ya sea para descarga automática, ver en línea y otras. Ver más detalles en el
siguiente link: https://developer.mozilla.org/es/docs/Web/HTTP/Headers/Content-
Disposition#Como_encabezado_de_respuesta_para_cuerpo_principal
4.2 Archivo web.xml
A continuación, configuraremos el archivo web.xml con la configuración requerida para una
aplicación struts2.5

<?xml version="1.0" encoding="UTF-8"?>


<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://xmlns.jcp.org/xml/ns/javaee"
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-
app_3_1.xsd"
id="WebApp_ID" version="3.1">
<display-name>Struts2JReports-E01</display-name>
<filter>
<filter-name>struts2</filter-name>
<filter-class>org.apache.struts2.dispatcher.filter.StrutsPrepareAndExecuteFilter</filter-class>
<init-param>
<param-name>actionPackages</param-name>
<param-value>edu.cibertec.action</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>struts2</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
<session-config>
<session-timeout>30</session-timeout>
</session-config>
<welcome-file-list>
<welcome-file>default.jsp</welcome-file>
</welcome-file-list>
</web-app>

5 Crear un reporte en iReport Designer


Para crear un nuevo reporte, presionaremos sobre el menú “Archivo” y elegimos la opción
“New…”.

A continuación, nos mostrará una pantalla donde elegiremos a la izquierda “Report” y a la


derecha la plantilla que vamos a elegir. Para este caso elegiré “Simple Blue” pero puede ser
cualquier otra.
Finalmente, presionamos el botón “Launch Report Wizard” el cual nos lanzará el asistente
para configurar el origen de datos del reporte. En el asistente ingresamos el nombre del
reporte y la dirección en el proyecto, donde se guardará. Para este caso
6 Implementación de clases
6.1 ListAction.class
package edu.cibertec.action;

import com.opensymphony.xwork2.ActionSupport;

public class ListAction extends ActionSupport {


private static final long serialVersionUID = 1L;
@Override
public String execute() throws Exception {
return "SUCCESS";
}
}

6.2 ReportAction.class
package edu.cibertec.action;

import java.io.File;
import java.io.FileInputStream;
import java.io.InputStream;
import java.sql.ResultSet;
import java.util.HashMap;

import org.apache.struts2.ServletActionContext;

import com.opensymphony.xwork2.ActionSupport;
import edu.cibertec.dao.ReportDAO;
import net.sf.jasperreports.engine.JRResultSetDataSource;
import net.sf.jasperreports.engine.JasperCompileManager;
import net.sf.jasperreports.engine.JasperExportManager;
import net.sf.jasperreports.engine.JasperFillManager;
import net.sf.jasperreports.engine.JasperPrint;
import net.sf.jasperreports.engine.JasperReport;

public class ReportAction extends ActionSupport {


private static final long serialVersionUID = 1L;
public ResultSet rs = null;
public String submit = null;
public InputStream fileInputStream;
public String jasperPath = "";
public String pdfName = "";
public String rpt = "";

@Override
public String execute() throws Exception {
try {
rs = new ReportDAO().listadoAlumnos();
jasperPath =
ServletActionContext.getServletContext().getRealPath("/Reports");
pdfName = "Student Report";
rpt = "rptListadoAlumnos.jrxml";
JRResultSetDataSource resultSetDataSource = new
JRResultSetDataSource(rs);
HashMap<String, Object> pm = new HashMap<String, Object>();
JasperReport jr = JasperCompileManager.compileReport(jasperPath +
"/" + rpt);
JasperPrint jp = JasperFillManager.fillReport(jr, pm,
resultSetDataSource);
JasperExportManager.exportReportToPdfFile(jp, jasperPath +
pdfName + ".pdf");
fileInputStream = new FileInputStream(new File(jasperPath +
pdfName + ".pdf"));
} catch (Exception e) {
System.out.println(e.getMessage());
}
return "SUCCESS";
}
}

6.3 ReportDAO.class
package edu.cibertec.dao;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;

import edu.cibertec.sql.ConexionBD;

public class ReportDAO {


private ConexionBD sql;

public ReportDAO() {
this.sql = new ConexionBD();
}

public ResultSet listadoAlumnos() throws Exception {


Connection cn = sql.getConnection();
ResultSet rs = null;
try {
String sql = "SELECT id_alumno, nombres, apellido_paterno,
apellido_materno, edad, correo_electronico FROM alumno";
PreparedStatement ps = cn.prepareStatement(sql);
rs = ps.executeQuery();
System.out.println("retorna resultset");
} catch (Exception e) {
// TODO: handle exception
System.out.println(e.getMessage());
}
return rs;
}
}
6.4 ConexionBD.class
package edu.cibertec.sql;

import java.sql.Connection;
import java.sql.DriverManager;

public class ConexionBD {


public Connection getConnection() throws Exception {
Connection cn = null;
try {
Class.forName("com.mysql.jdbc.Driver");
cn =
DriverManager.getConnection("jdbc:mysql://localhost/cibertec", "root", "");
} catch (Exception e) {
e.printStackTrace();
System.out.println(e.getMessage());
}
return cn;
}
}

6.5 listadoAlumnos.jsp
<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
pageEncoding="ISO-8859-1"%>
<%@ taglib prefix="s" uri="/struts-tags"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="ISO-8859-1">
<title>Insert title here</title>
</head>
<body>
<h1>Listado de alumnos</h1>

<form method="POST" name="rpt" action="StudentReport">


<button type="submit" name="submit" value="pdf">Generar
Reporte</button>
</form>
</body>
</html>
7 Ejecución del proyecto
8 Anexo
La creación de la plantilla también puede hacerse con “Jaspersoft Studio”, que brinda mayor
compatibilidad con versiones recientes de Java.

https://sourceforge.net/projects/jasperstudio/files/updatesite/6.3.1/

El asistente para generar el archivo es el mismo es muy parecido al iReport Designer.

Potrebbero piacerti anche