Foro de elhacker.net

Programación => Java => Mensaje iniciado por: mapers en 8 Marzo 2014, 08:38 am



Título: Ireport error
Publicado por: mapers en 8 Marzo 2014, 08:38 am
Buenas señores estoy trabajando con una pagina JSP para hacer el resporte me tira errores les adjunto el archivo jsp que uso .

Código
  1.  
  2. <%--
  3.    Document   : Reporte
  4.    Created on : 26/12/2012, 09:05:24 AM
  5.    Author     : Unknown
  6. --%>
  7.  
  8. <%@page import="net.sf.jasperreports.engine.JasperRunManager"%>
  9. <%@page contentType="text/html" pageEncoding="UTF-8"%>
  10.  
  11. <%@ page import="java.util.*" %>
  12. <%@ page import="java.io.*" %>
  13. <%@ page import="java.sql.*" %>
  14. <% /*Parametros para realizar la conexión*/
  15.    Connection conexion;
  16.    Class.forName("com.mysql.jdbc.Driver").newInstance();
  17.    conexion = DriverManager.getConnection("jdbc:mysql://Ip/BDados", "root", "root");
  18.    /*Establecemos la ruta del reporte*/
  19.    File reportFile = new File(application.getRealPath("Reporte/reporte.jasper"));
  20.    /* No enviamos parámetros porque nuestro reporte no los necesita asi que escriba
  21.      cualquier cadena de texto ya que solo seguiremos el formato del método runReportToPdf*/
  22.    Map parameters = new HashMap();
  23.    //parameters.put("Id_Historial", "18");
  24.    out.println(reportFile.getPath());
  25.    /*Enviamos la ruta del reporte, los parámetros y la conexión(objeto Connection)*/
  26.    try {
  27.  
  28.        byte[] bytes = JasperRunManager.runReportToPdf(reportFile.getPath(), parameters, conexion);
  29.        /*Indicamos que la respuesta va a ser en formato PDF*/
  30.        response.setContentType("application/pdf");
  31.        response.setContentLength(bytes.length);
  32.        ServletOutputStream ouputStream = response.getOutputStream();
  33.        ouputStream.write(bytes, 0, bytes.length); /*Limpiamos y cerramos flujos de salida*/ ouputStream.flush();
  34.        ouputStream.flush();
  35.        ouputStream.close();
  36.  
  37.    } catch (NumberFormatException ex) {//El bloque catch indica el error que captura.
  38.        out.println(ex.getMessage());
  39.    }
  40.  
  41. %>
  42.  
  43.  

y estos son los errores que me tira :

Código
  1. org.apache.jasper.JasperException: Ha sucedido una excepción al procesar la página JSP /ReportePorPais.jsp en línea 27
  2.  
  3. 24:     /*Enviamos la ruta del reporte, los parámetros y la conexión(objeto Connection)*/
  4. 25:     try {
  5. 26:
  6. 27:         byte[] bytes = JasperRunManager.runReportToPdf(reportFile.getPath(), parameters, conexion);
  7. 28:         /*Indicamos que la respuesta va a ser en formato PDF*/
  8. 29:         response.setContentType("application/pdf");
  9. 30:         response.setContentLength(bytes.length);
  10.  
  11.  
  12. Stacktrace:
  13. org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:568)
  14. org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:470)
  15. org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:390)
  16. org.apache.jasper.servlet.JspServlet.service(JspServlet.java:334)
  17. javax.servlet.http.HttpServlet.service(HttpServlet.java:728)
  18. org.netbeans.modules.web.monitor.server.MonitorFilter.doFilter(MonitorFilter.java:393)
  19.  

A que se debe estoy usando las misma version de librerias


Título: Re: Ireport error
Publicado por: Mitsug en 8 Marzo 2014, 16:48 pm
Hola,

Antes que nada, debo decirte que usar scriplets es una muy mala práctica de programación en páginas JSP. Quizás recién empiezas y aún no lo sabes, pero así es. Ahora, tienes un montón de tags de la JSTL (JSP Standard Tag Library), que agrupan tags en 4 grupos: core, xml, fmt y sql y además esto deberías hacerlo por medio de servlets.

La forma de utilizar JSTL es añadiendo la siguiente cabecera a tu página JSP, después del DOCTYPE.

Código
  1. <%@taglib prefix="cualquierLetra" uri="http://java.sun.com/jsp/jstl/core" %>
  2.  

Ahora, tienes que tener una DAO para acceder a la base de datos y desde el servlet utilizar este DAO para acceder a la base de datos. La petición de la página JSP se envía al servlet, el servlet utiliza la DAO y accede a la base de datos. Esta es la estructura básica al trabajar con JSP.


Coloca tus beans para poder entender lo que quieres hacer. Otra cosa, ¿no te ha botado el causa raíz de exepciones? Y coloca también la cadena de conexión de tu datasource donde tienes el ireport, la conexión debería ser: http://127.0.0.1:3306/database