当我编译使用ireport创建的jrxml文件并导出它时如何在jsp页面的特定部分中导出此页面 我在谷歌搜索了很多,我没有得到任何与我的要求相关的解决方案
如果我在jsp页面中写一些内容,则没有显示只有报告可见
我在jsp页面中的代码是: -
<%@ page language="java" import="net.sf.jasperreports.engine.*" %>
<%@ page language="java" import="net.sf.jasperreports.engine.export.*" %>
<%@ page import="java.sql.*,java.io.*" %>
<%
String filename = request.getParameter("filename");
String reporttype = request.getParameter("reporttype");
System.out.println(filename);
System.out.println(reporttype);
Class.forName("com.mysql.jdbc.Driver");
Connection con = DriverManager.getConnection("jdbc:mysql://localhost:3306/kms","root", "root");
System.out.println("Connection Established");
String path = application.getRealPath("/");
System.out.println(path);
JasperPrint jasperPrint = JasperFillManager.fillReport(path + "/reports/" + filename, null, con);
System.out.println("Report Created...");
OutputStream ouputStream = response.getOutputStream();
JRExporter exporter = null;
if( "pdf".equalsIgnoreCase(reporttype) )
{
response.setContentType("application/pdf");
response.setHeader("Content-Disposition", "inline; filename=\"file.pdf\"");
exporter = new JRPdfExporter();
exporter.setParameter(JRExporterParameter.JASPER_PRINT, jasperPrint);
exporter.setParameter(JRExporterParameter.OUTPUT_STREAM, ouputStream);
}
try
{
exporter.exportReport();
}
catch (JRException e)
{
throw new ServletException(e);
}
finally
{
if (ouputStream != null)
{
try
{
ouputStream.close();
}
catch (IOException ex)
{
System.out.println("exception thrown");
}
}
}
%>
答案 0 :(得分:2)
创建另一个JSP,其中包含<iframe>
或<object>
,其src
指向报告的URL,然后在浏览器中打开该JSP。
<iframe src="report.jsp?filename=foo&reporttype=pdf"></iframe>
这样您就可以围绕<iframe>
编写另一个模板文本。
<!DOCTYPE html>
<html lang="en">
<head><title>Report</title></head>
<body>
<h1>Here is your report</h1>
<iframe src="report.jsp?filename=foo&reporttype=pdf"></iframe>
<p>Was it nice, huh?</p>
</body>
</html>
请注意,以这种方式通过JSP发送二进制文件可能会因JSP生成的模板文本(空白,换行符)而破坏二进制内容。而是在Servlet类中进行。只需将所有代码移动到doGet()
方法中,在web.xml
中映射Servlet类并调用它而不是JSP。
<iframe src="reportServlet?filename=foo&reporttype=pdf"></iframe>