JasperReport y JSP\'s

rbojorges
04 de Noviembre del 2004

Hola, estamos programando en JSP con TomCat como servidor de aplicaciones, en lo que tenemos problemas, es en nuestra inexperiencia con JasperReport e iReports. La ayuda solicitada es la siguiente: En nuestros JSP's ¿como llamamos un Reporte ya compilado? y la otra es ¿como le pasamos parametros directamente?.

La ayuda que nos puedan brindar nos va a ser de mucha utilidad. La verdad ya le buscamos por todos lados en internet pero no encontramos documentacion o ejemplos de codigo de como se hace esto. Y por eso nos atrevimos a molestarlos.

Gracias!!!

jcalienes
04 de Noviembre del 2004
hola, yo lo hago con el siguiente servlet. por cierto que lo saque de los demos del JasperReports:

public class OrdenPdfServlet extends HttpServlet {

/* (non-Javadoc)
* @see javax.servlet.http.HttpServlet#doGet(javax.servlet.http.HttpServletRequest, javax.servlet.http.HttpServletResponse)
*/
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {

File reportFile = new File(getServletContext().getRealPath("/WEB-INF/classes/Orden.jasper"));

Map parameters = new HashMap();

parameters.put("periodo", request.getParameter("periodo"));
parameters.put("tipo_meta", request.getParameter("tipoMeta"));
parameters.put("tipo_orcs", request.getParameter("tipoOrden"));
parameters.put("nro_orcs", request.getParameter("nroOrden"));

try {
Context initContext;
initContext = new InitialContext();
Context envContext = (Context)initContext.lookup("java:/comp/env");
DataSource ds = (DataSource)envContext.lookup("jdbc/dbPresupuesto");
byte[] bytes =
JasperRunManager.runReportToPdf(reportFile.getPath(), parameters, ds.getConnection());
response.setContentType("application/pdf");
response.setContentLength(bytes.length);
ServletOutputStream ouputStream = response.getOutputStream();
ouputStream.write(bytes, 0, bytes.length);
ouputStream.flush();
ouputStream.close();
} catch (NamingException e) {
e.printStackTrace();
} catch (JRException e) {
e.printStackTrace();
} catch (SQLException e) {
e.printStackTrace();
}
}
}

-- el servlet lo declaro en web.xml
-- estoy usando un datasource definido en server.xml
-- ojo, si ven que algo se pueda mejorar por favor avisenme
saludos
juan calienes