Ireport error

Iniciado por mapers, 8 Marzo 2014, 08:38 AM

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

mapers

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 (java) [Seleccionar]


<%--
   Document   : Reporte
   Created on : 26/12/2012, 09:05:24 AM
   Author     : Unknown
--%>

<%@page import="net.sf.jasperreports.engine.JasperRunManager"%>
<%@page contentType="text/html" pageEncoding="UTF-8"%>

<%@ page import="java.util.*" %>
<%@ page import="java.io.*" %>
<%@ page import="java.sql.*" %>
<% /*Parametros para realizar la conexión*/
   Connection conexion;
   Class.forName("com.mysql.jdbc.Driver").newInstance();
   conexion = DriverManager.getConnection("jdbc:mysql://Ip/BDados", "root", "root");
   /*Establecemos la ruta del reporte*/
   File reportFile = new File(application.getRealPath("Reporte/reporte.jasper"));
   /* No enviamos parámetros porque nuestro reporte no los necesita asi que escriba
    cualquier cadena de texto ya que solo seguiremos el formato del método runReportToPdf*/
   Map parameters = new HashMap();
   //parameters.put("Id_Historial", "18");
   out.println(reportFile.getPath());
   /*Enviamos la ruta del reporte, los parámetros y la conexión(objeto Connection)*/
   try {

       byte[] bytes = JasperRunManager.runReportToPdf(reportFile.getPath(), parameters, conexion);
       /*Indicamos que la respuesta va a ser en formato PDF*/
       response.setContentType("application/pdf");
       response.setContentLength(bytes.length);
       ServletOutputStream ouputStream = response.getOutputStream();
       ouputStream.write(bytes, 0, bytes.length); /*Limpiamos y cerramos flujos de salida*/ ouputStream.flush();
       ouputStream.flush();
       ouputStream.close();

   } catch (NumberFormatException ex) {//El bloque catch indica el error que captura.
       out.println(ex.getMessage());
   }

%>



y estos son los errores que me tira :

Código (actionscript) [Seleccionar]

org.apache.jasper.JasperException: Ha sucedido una excepción al procesar la página JSP /ReportePorPais.jsp en línea 27

24:     /*Enviamos la ruta del reporte, los parámetros y la conexión(objeto Connection)*/
25:     try {
26:
27:         byte[] bytes = JasperRunManager.runReportToPdf(reportFile.getPath(), parameters, conexion);
28:         /*Indicamos que la respuesta va a ser en formato PDF*/
29:         response.setContentType("application/pdf");
30:         response.setContentLength(bytes.length);


Stacktrace:
org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:568)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:470)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:390)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:334)
javax.servlet.http.HttpServlet.service(HttpServlet.java:728)
org.netbeans.modules.web.monitor.server.MonitorFilter.doFilter(MonitorFilter.java:393)


A que se debe estoy usando las misma version de librerias

Mitsug

#1
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 (=java) [Seleccionar]

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


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