使用参数从jsp页面调用jasper报告

时间:2015-04-21 07:52:10

标签: java html asp.net jsp pdf

我正在调用一个索引页面,该页面将参数发送到以PDF格式运行jasper报告的页面。但是当我运行项目时,我遇到生成PDF的问题,说PDF格式可能不正确或损坏(Mozilla和IE11)

“的index.jsp”

<form method="POST" action="ShowPdf.jsp">
    <input type="text" value="" id ="personId" name="personId">
    <input type="submit" value="show">  
</form>


int id=Integer.parseInt(request.getParameter("personId"));            
try
{
    Connection conn=null;
    //Connecting to the MySQL database

    Class.forName("com.mysql.jdbc.Driver").newInstance();
    conn = DriverManager.getConnection("jdbc:mysql:/localhost:3306/bd_hospital_nikdu", "root", "Admin123");

    File reportFile = new File(application.getRealPath("//reports//newReport2.jasper"));//your report_name.jasper file
    Map parameters = new HashMap();
    parameters.put("personId",id);

    byte[] bytes = JasperRunManager.runReportToPdf(reportFile.getPath(), parameters, conn);

    //byte[] bytes = JasperRunManager.runReportToHtmlFile(reportFile.getPath(),null, conn).getBytes();

    response.setContentType("application/pdf");
    response.setContentLength(bytes.length);

    ServletOutputStream outStream = response.getOutputStream();
    outStream.write(bytes, 0, bytes.length);

    outStream.flush();
    outStream.close();

}
catch (Exception ex) {
    ex.printStackTrace();
} 

1 个答案:

答案 0 :(得分:0)

这是我的解决方案

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
    "http://www.w3.org/TR/html4/loose.dtd">

<%@ page import="net.sf.jasperreports.engine.*" %>

<%@ page import="java.util.*" %>

<%@ page import="java.io.*" %>

<%@ page import="java.sql.*" %>

<%@ page import="net.sf.jasperreports.view.JRViewer" %>

<%@ page import="com.itextpdf.text.*"%>

<%@ page import="com.itextpdf.text.pdf.*"%>

<%@ page import="java.util.HashMap" %>

<%

            /*Parametros para realizar la conexión*/

            Connection conexion;

            Class.forName("com.mysql.jdbc.Driver").newInstance();

            conexion = DriverManager.getConnection("jdbc:mysql://localhost:3306/gae", "root", "");

            /*Establecemos la ruta del reporte*/

            File reportFile = new File(application.getRealPath("reportes//prueba1.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("cedula", "cedula");

            parameters.put("nombre", "nombre");

            /*Enviamos la ruta del reporte, los parámetros y la conexión(objeto Connection)*/

            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.close();

%>
<html>

    <head>

        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">

        <title>JSP Page</title>

    </head>

    <body>

        <h1>Hello World!</h1>

    </body>

</html>