comment
IRC Chat
play_arrow
Este sitio utiliza cookies propias y de terceros. Si continúa navegando consideramos que acepta el uso de cookies. OK Más Información.

[Duda] Reporte con jasper report y java

  • 7 Respuestas
  • 2343 Vistas

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado rush

  • *
  • Underc0der
  • Mensajes: 379
  • Actividad:
    0%
  • Reputación 7
    • Ver Perfil
  • Skype: iruxh1773
« en: Abril 14, 2015, 04:40:54 pm »
Que tal, estoy intentando hacer un reporte, pero no he tenido exito, soy nuevo usando esto de jasper report, intente usar itext pero se me hace demasiado complejo, con jasper report creo mi diseño y solo necesito desplegarlo ya sea desde un JSP o desde un servlet, para el despliegue lo tengo de la siguiente manera:


Mis archivos estan de la siguiente manera


y me manda el siguiente error al ejecutar:


No se a que se deba ese error, espero puedan ayudarme.

Saludos
« Última modificación: Mayo 11, 2015, 08:46:55 am por Expermicid »
No tienes permisos para ver links. Registrate o Entra con tu cuenta


Desconectado Gus Garsaky

  • *
  • Underc0der
  • Mensajes: 93
  • Actividad:
    0%
  • Reputación -1
    • Ver Perfil
  • Skype: gus.garsaky
« Respuesta #1 en: Abril 14, 2015, 04:53:01 pm »
Al parecer, el error es porque no le estás pasando la ruta correcta al constructor de File para que cargue el archivo. index.jsp está dentro de WebPages y tu carpeta reportes está dentro de WEB-INF.

Podrías hacer algo como:

Código: Java
  1. request.getContextPath()+"/WEB-INF/reportes/PDF.jasper"

La instrucción, request.getContextPath(), te devuelve el context path, y de ahí navegas hacia el destino.

Saludos.

Desconectado rush

  • *
  • Underc0der
  • Mensajes: 379
  • Actividad:
    0%
  • Reputación 7
    • Ver Perfil
  • Skype: iruxh1773
« Respuesta #2 en: Abril 14, 2015, 05:16:25 pm »
Tienes razon en que ese error es sobre la ruta, lo hice como lo pusiste y me manda lo siguiente:

Citar
Error:java.io.FileNotFoundException: \Jasper-Jasper-context-root\reports\PDF.jasper

lo que pasa es que no se encuentra en la carpeta Jasper-Jasper-Context-root, cuando se ejecuta mi servidor de esa manera cambian las cosas y no se por que, tambien intente hacerlo con

Citar
application.getRealPath("reports/PDF.jasper")

y a la ruta a la que apunta es esta:

Citar
C:\Users\rush\AppData\Roaming\JDeveloper\system11.1.2.1.38.60.81\o.j2ee\drs\Jasper\JasperWebApp.war\reports\PDF.jasper

pero esa tampoco es la ruta, me imagino que JasperWebApp.war es cuando hace el deploy de la aplicacion, la ruta original es esta:

Citar
C:\JDeveloper\mywork\Jasper\Jasper\public_html\WEB-INF\report\PDF.jasper

y aunque le pase la ruta original:

Citar
File ReportFile = new File ("C:/JDeveloper/mywork/Jasper/Jasper/public_html/WEB-INF/report/report/PDF.jasper");

me manda lo siguiente

« Última modificación: Abril 14, 2015, 05:20:37 pm por rush »
No tienes permisos para ver links. Registrate o Entra con tu cuenta


Desconectado Gus Garsaky

  • *
  • Underc0der
  • Mensajes: 93
  • Actividad:
    0%
  • Reputación -1
    • Ver Perfil
  • Skype: gus.garsaky
« Respuesta #3 en: Abril 14, 2015, 05:56:22 pm »
El problema es que no estás usando una arquitectura correcta en tu aplicación, no estás respetando el patrón MVC.

Es importante seguir las buenas prácticas de programación. Nunca se debe mezclar lógica de negocio con vistas, en aplicaciones web es muy recomendable aplicar el patrón MVC. En éste caso, la capa de acceso a datos (DAO) debe estar aislada del resto de capas (vista y controladores). Solo deben ser llamadas desde el contrador y éste no debe saber cómo funcionan los DAO.

Aplicando MVC, el ejemplo anterior quedaría así:

Código: Java
  1. @Override
  2. protectec void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, No tienes permisos para ver links. Registrate o Entra con tu cuenta {
  3.      response.setHeader("Content-Disposition", "inline; filename=\"application.pdf\"");
  4.      response.setContentType("application/pdf");
  5.  
  6.     No tienes permisos para ver links. Registrate o Entra con tu cuenta path ="C:\\Users\\Acer\\Documents\\NetBeansProjects\\tu_proyecto\\WebPages\\resources\\reports\\PDF.jrxml";
  7.  
  8.     try (No tienes permisos para ver links. Registrate o Entra con tu cuenta con = ConnectionUtils.getConnection()) {
  9.         JasperPrint jasperPrint = JasperUtils.buildJasperPrint(path, con);
  10.         // exportamos el archivo
  11.         JasperExportManager.exportReportToPdfStream(jasperPrint, response.getOutputStream());
  12.     } catch(JRException e1) {
  13.         e1.printStackTrace();
  14.     } catch(No tienes permisos para ver links. Registrate o Entra con tu cuenta e2) {
  15.         e2.printStackTrace();
  16.     }
  17. }

Es conveniente que muevas tu folder reportes dentro de un folder resources dentro de WebPages.

Código: Java
  1. public class ConnectionUtils {
  2.     private static final No tienes permisos para ver links. Registrate o Entra con tu cuenta HOST = "jdbc:mysql://localhost:3306/tu_bbdd";
  3.     private static final No tienes permisos para ver links. Registrate o Entra con tu cuenta USER = "root";
  4.     private static final No tienes permisos para ver links. Registrate o Entra con tu cuenta PASS = "";
  5.     private static final No tienes permisos para ver links. Registrate o Entra con tu cuenta DRIVER = "com.mysql.jdbc.Driver";
  6.  
  7.     public static No tienes permisos para ver links. Registrate o Entra con tu cuenta getConnection() throws No tienes permisos para ver links. Registrate o Entra con tu cuenta {
  8.         Class.forName(DRIVER);
  9.         return No tienes permisos para ver links. Registrate o Entra con tu cuenta.getConnection(HOST, USER, PASS);
  10.     }
  11. }

Código: Java
  1. public class JasperUtils {
  2.  
  3.     public static JasperPrint buildJasperPrint(No tienes permisos para ver links. Registrate o Entra con tu cuenta path, No tienes permisos para ver links. Registrate o Entra con tu cuenta con) {
  4.         JasperReport jr = JasperCompileManager.compileReport(path);
  5.         JasperPrint jasperPrint = JasperFillManager.fillReport(jr,  null, con);
  6.         return jasperPrint;
  7.     }
  8. }

Edit: Para acceder al PDF, solo basta:

Código: HTML5
  1. <No tienes permisos para ver links. Registrate o Entra con tu cuenta href="TuServlet">Ver PDF</No tienes permisos para ver links. Registrate o Entra con tu cuenta>

Importante es que debes de reemplazar "TuServlet" por la ruta de mapeo que le has especificado:

Código: Java
  1. @WebServlet(name="ReportServlet", urlPatterns={"/TuServlet"})
  2. public class ReportServlet extends HttpServlet { ... }


Comentas cómo te fue. Saludos.


PD: ¿Por qué movieron el tema a 'dudas generales'? ¡Éste tema es exclusivamente Java!
« Última modificación: Abril 14, 2015, 06:04:03 pm por Gus Garsaky »

Desconectado rush

  • *
  • Underc0der
  • Mensajes: 379
  • Actividad:
    0%
  • Reputación 7
    • Ver Perfil
  • Skype: iruxh1773
« Respuesta #4 en: Abril 16, 2015, 06:01:36 pm »
Bueno pues antes que nada gracias por responder y tratar de ayudarme, después de tanto intentar y buscar, pues entendí un poco el funcionamiento, al parecer el .JRXML es una plantilla o tu diseño de reporte, el cual necesita ser compilado, para obtener nuestro reporte compilado .JASPER, y para ser desplegado se utiliza jasperprint, al final solo use este fragmento de codigo en un servlet:

Código: No tienes permisos para ver links. Registrate o Entra con tu cuenta
    public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        response.setHeader("Content-Disposition", "inline; filename=\"application.pdf\"");
        response.setContentType("application/pdf");
                try{
                Connection conn = null;
                Class.forName("oracle.jdbc.driver.OracleDriver");
                        conn = DriverManager.getConnection("jdbc:oracle:thin:@XXXX", "XXXX", "XXXX");
                    File archivo = new File("C:/JDeveloper/mywork/jreports/jreports/public_html/reports/PDF.jasper");
                    JasperReport reporte = (JasperReport)JRLoader.loadObject(archivo);
                    JasperPrint jasperPrint = JasperFillManager.fillReport(reporte, null, conn);
                    JasperExportManager.exportReportToPdfStream(jasperPrint, response.getOutputStream());
                } catch (ClassNotFoundException e) {
                    System.out.println(e);
        } catch (SQLException e) {
            System.out.println(e);
        } catch (JRException e) {
            System.out.println(e);
        }
    }

y asi fue como se desplego mi diseño, y lo de la buena practica lo tomo en cuenta, solo que lo estaba haciendo asi por pruebas que hacia, pero creo que todo mi esfuerzo por entender el funcionamiento y utilizar jasper report pues no me servira por ahora ya que creo solo es un reporteador que imprime listas de datos, yo ando buscando algo para hacer un formato y pasarle parametros para llegar ese formato y mandarlo a PDF, entonces creo que optare por usar ITEXT :/

Gracias Gus Garsaky
No tienes permisos para ver links. Registrate o Entra con tu cuenta


Desconectado Gus Garsaky

  • *
  • Underc0der
  • Mensajes: 93
  • Actividad:
    0%
  • Reputación -1
    • Ver Perfil
  • Skype: gus.garsaky
« Respuesta #5 en: Abril 16, 2015, 07:10:02 pm »
Jasper tiene soporte para parámetros, queries y demás cosas; de hecho, Jasper usa internamente iTetx. Checka su documentación.


Saludos.

Desconectado ~ Yoya ~

  • *
  • Underc0der
  • Mensajes: 152
  • Actividad:
    0%
  • Reputación 0
    • Ver Perfil
    • Email
« Respuesta #6 en: Abril 16, 2015, 10:46:37 pm »
No tienes permisos para ver links. Registrate o Entra con tu cuenta
y me manda el siguiente error al ejecutar:


No se a que se deba ese error, espero puedan ayudarme.

Saludos

No tienes permisos para ver links. Registrate o Entra con tu cuenta
El problema es que no estás usando una arquitectura correcta en tu aplicación, no estás respetando el patrón MVC.

Me gusta mucho que ayudas, pero ahí que ser objetivo compa.
Mi madre me dijo que estoy destinado a ser pobre toda la vida.
Engineering is the art of balancing the benefits and drawbacks of any approach.

Desconectado Gus Garsaky

  • *
  • Underc0der
  • Mensajes: 93
  • Actividad:
    0%
  • Reputación -1
    • Ver Perfil
  • Skype: gus.garsaky
« Respuesta #7 en: Abril 17, 2015, 01:30:31 am »
Sí,  tienes razón ~ Yoya ~, no venía al caso, pero igual es bueno que se lo haya comentado para que se vaya familiarizando con MVC (que seguro tocará más adelante Spring, JSF, Trapestry, entre otros).

Saludos.

PD: No sabía que estabas también por acá xD.

 

¿Te gustó el post? COMPARTILO!



[SOLUCIONADO] Duda con " "

Iniciado por Krisium

Respuestas: 1
Vistas: 1778
Último mensaje Junio 10, 2010, 10:50:35 am
por Xa0s
[SOLUCIONADO] Duda con Windows 7 de 32 bits & 64 bits

Iniciado por andrestoushit

Respuestas: 2
Vistas: 956
Último mensaje Marzo 15, 2016, 04:01:16 pm
por Lah-Vahn
[SOLUCIONADO][Taller PHP] Duda taller php 2 ejercicio 2

Iniciado por Only

Respuestas: 3
Vistas: 1996
Último mensaje Agosto 05, 2011, 09:48:09 pm
por Only
[SOLUCIONADO] [Taller PHP] Duda taller php 1 ejercicio 2

Iniciado por arthusu

Respuestas: 3
Vistas: 1973
Último mensaje Julio 18, 2011, 02:20:03 am
por arthusu
[SOLUCIONADO] [Taller PHP] Duda taller php 1 ejercicio 2

Iniciado por Only

Respuestas: 2
Vistas: 1545
Último mensaje Agosto 01, 2011, 04:28:03 pm
por Only