Struts2 通过浏览器上的jaspereports显示生成的报告
我正在开发struts2应用程序,我想在浏览器上显示生成的报告。我已经成功地在磁盘上生成了报告。但现在我想在浏览器上看到它。下面是一些代码 my index.jspStruts2 通过浏览器上的jaspereports显示生成的报告,struts2,jasper-reports,Struts2,Jasper Reports,我正在开发struts2应用程序,我想在浏览器上显示生成的报告。我已经成功地在磁盘上生成了报告。但现在我想在浏览器上看到它。下面是一些代码 my index.jsp <body> <a href="HTML.action">Reporting</a> </body> 我的行动数据库列表 public class DataBeanList extends ActionSupport { public ArrayList<Da
<body>
<a href="HTML.action">Reporting</a>
</body>
我的行动数据库列表
public class DataBeanList extends ActionSupport {
public ArrayList<DataBean> getDataBeanList() {
ArrayList<DataBean> dataBeanList = new ArrayList<DataBean>();
dataBeanList.add(produce("Manisha", "India"));
dataBeanList.add(produce("Dennis Ritchie", "USA"));
dataBeanList.add(produce("V.Anand", "India"));
dataBeanList.add(produce("Shrinath", "California"));
dataBeanList.add(produce("issam", "casa"));
return dataBeanList;
}
/**
* This method returns a DataBean object,
* with name and country set in it.
*/
private DataBean produce(String name, String country) {
DataBean dataBean = new DataBean();
dataBean.setName(name);
dataBean.setCountry(country);
return dataBean;
}
public void exporte(){
String sourceFileName = "D://Test/workspace/ztest/WebContent/reports/jasper_report_template.jasper";
// + "test/jasper_report_template.jasper";
//D:\Test\workspace\ztest\WebContent\reports
String printFileName = null;
DataBeanList DataBeanList = new DataBeanList();
ArrayList dataList = DataBeanList.getDataBeanList();
JRBeanCollectionDataSource beanColDataSource =
new JRBeanCollectionDataSource(dataList);
Map parameters = new HashMap();
try {
printFileName = JasperFillManager.fillReportToFile(sourceFileName,
parameters, beanColDataSource);
if (printFileName != null) {
/**
* 1- export to PDF
*/
JasperExportManager.exportReportToPdfFile(printFileName,
"D://sample_report.pdf");
}
} catch (JRException e) {
e.printStackTrace();
}
}
}
公共类DataBeanList扩展了ActionSupport{
公共ArrayList getDataBeanList(){
ArrayList dataBeanList=新的ArrayList();
添加(生产(“马尼沙”、“印度”);
添加(生产(“丹尼斯·里奇”,“美国”);
添加(生产(“V.Anand”、“印度”);
添加(product(“Shrinath”,“California”);
添加(生产(“issam”、“casa”);
返回数据点列表;
}
/**
*此方法返回一个DataBean对象,
*上面写着名字和国家。
*/
私有数据库生产(字符串名称、字符串国家/地区){
DataBean DataBean=新的DataBean();
dataBean.setName(名称);
dataBean.setCountry(国家);
返回数据库;
}
公共无效导出(){
String sourceFileName=“D://Test/workspace/ztest/WebContent/reports/jasper\u report\u template.jasper”;
//+“test/jasper\u report\u template.jasper”;
//D:\Test\workspace\ztest\WebContent\reports
字符串printFileName=null;
DataBeanList DataBeanList=新的DataBeanList();
ArrayList dataList=DataBeanList.getDataBeanList();
JRBeanCollectionDataSource beanColDataSource=
新的JRBeanCollectionDataSource(数据列表);
映射参数=新的HashMap();
试一试{
printFileName=JasperFillManager.fillReportToFile(sourceFileName,
参数,beanColDataSource);
if(printFileName!=null){
/**
*1-导出为PDF
*/
JasperExportManager.exportReportToPdfFile(打印文件名,
“D://sample_report.pdf”);
}
}捕获(JRE异常){
e、 printStackTrace();
}
}
}
首先,将报告导出到流,类似于:
JasperPrint jasperPrint = JasperFillManager.fillReport(jasperReport,
parameters, beanDataSource);
JasperExportManager.exportReportToPdfStream(jasperPrint, out);
然后将输出流转换为输入流,并在操作中使用getter/setter将其分配给inputStream
变量。并将操作配置为使用流
结果
<action ...>
<result type="stream">
<param name="inputName">inputStream</param>
<param name="contentType">application/pdf</param>
<param name="contentDisposition">attachment;filename="report.pdf"</param>
</result>
</action>
输入流
申请表格/pdf
附件filename=“report.pdf”
将报告导出到stream并使用Struts2stream
结果。@AleksandrM,谢谢您的回复,但我不明白您的方法,是否有链接。或者您能向我详细解释一下具体内容吗?请参阅。@AleksandrM,如果您看到我的操作,我正在将报告导出到磁盘中,如JasperExportManager.exportReportToPdfFile(printFileName,“D://sample\u report.pdf”);那么,如何检索该报告并在浏览器上显示它,或者在浏览器上显示它而不导出到硬盘