Struts2 通过浏览器上的jaspereports显示生成的报告

Struts2 通过浏览器上的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

我正在开发struts2应用程序,我想在浏览器上显示生成的报告。我已经成功地在磁盘上生成了报告。但现在我想在浏览器上看到它。下面是一些代码

my index.jsp

<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并使用Struts2
stream
结果。@AleksandrM,谢谢您的回复,但我不明白您的方法,是否有链接。或者您能向我详细解释一下具体内容吗?请参阅。@AleksandrM,如果您看到我的操作,我正在将报告导出到磁盘中,如JasperExportManager.exportReportToPdfFile(printFileName,“D://sample\u report.pdf”);那么,如何检索该报告并在浏览器上显示它,或者在浏览器上显示它而不导出到硬盘