我的JasperReport的具体用法

原创 2004年08月23日 09:47:00
我的系统:jsp+strtus+ejb+dao+db
我的思路:在Action(ro DispatchAction)组装好报表所需的参数,然后传递给统一的显示servlet

我的实现
1.显示servlet
2.参数class
3.Action

1.显示servlet(此处为html)
public class JRHtmlServlet extends HttpServlet {
  /**
   *
   */
   public void service(
          HttpServletRequest request,
          HttpServletResponse response
          ) throws IOException, ServletException{

    //得到所需参数
    JRParameterInterface jreportParam = null;
    jreportParam = (JRParameterInterface)request.getAttribute("jreportParam");

    response.setContentType("text/html;charset=GB2312");
    PrintWriter out = response.getWriter();

    try
    {

            JasperReport jasperReport = (JasperReport)JRLoader.loadObject(jreportParam.getJasperFile().getPath());

            JasperPrint jasperPrint =
                    JasperFillManager.fillReport(
                            jasperReport,
                            jreportParam.getParameters(),
                            jreportParam.getDataSet()
                            );

            JRHtmlExporter exporter = new JRHtmlExporter();

            Map imagesMap = new HashMap();
            request.getSession().setAttribute("IMAGES_MAP", imagesMap);

            exporter.setParameter(JRExporterParameter.JASPER_PRINT, jasperPrint);
            exporter.setParameter(JRExporterParameter.OUTPUT_WRITER, out);
            exporter.setParameter(JRHtmlExporterParameter.IMAGES_MAP, imagesMap);
            exporter.setParameter(JRHtmlExporterParameter.IMAGES_URI, "JRReport/image?image=");

            exporter.exportReport();
    }
    catch (JRException e)
    {
            out.println("<html>");
            out.println("<head>");
            out.println("<title>JasperReports - Web Application Sample</title>");
//            out.println("<link rel=/"stylesheet/" type=/"text/css/" href=/"../stylesheet.css/" title=/"Style/">");
            out.println("</head>");

            out.println("<body bgcolor=/"white/">");

            out.println("<span class=/"bnew/">JasperReports encountered this error :</span>");
            out.println("<pre>");

            e.printStackTrace(out);

            out.println("</pre>");

            out.println("</body>");
            out.println("</html>");
    }
}

}
2.参数class

public interface JRParameterInterface {
//set所需参数
  void setParameters(Object object, Object object1);
//返回所需file
  File  getJasperFile();
//返回页面的parameter
  Map getParameters();
//返回页面的数据,如果为空,返回 (new JREmptyDataSource()),否则返回 (new WebappDataSource(data))
  JRDataSource getDataSet();
}

实现类
public class JReportParam implements JRParameterInterface {


  private DataSet jrData;
  private File jasperFile;
  private JRDataSource jrDataSource;
  private Map parameterMap;

  public JReportParam(File jasperFile,DataSet data) {
    this.jasperFile = jasperFile;
    jrData = data;
    parameterMap = new HashMap();
  }

  public JReportParam(File jasperFile) {
    this(jasperFile,(DataSet)null);
  }

  public JReportParam(File jasperFile,JRDataSource JRdata) {
    this.jasperFile = jasperFile;
    jrDataSource = JRdata;
    parameterMap = new HashMap();
  }

  //set所需参数
  public void setParameters(Object object, Object object1){
    parameterMap.put(object, object1);
  };

  //返回所需file
  public File  getJasperFile(){
    return jasperFile;
  };

  //返回页面的parameter
  public Map  getParameters(){
    return parameterMap;
  };
//返回页面的数据,如果为空,返回 (new JREmptyDataSource()),否则返回 (new WebappDataSource(data))
  public JRDataSource getDataSet(){
    if (jrDataSource == null){
      if ((jrData==null) || (jrData.getRetCode().equals("NO_DATA"))){
        jrDataSource = new JREmptyDataSource();
      }else{
        jrDataSource = new WebappDataSource(jrData);
      }
    }
    return jrDataSource;
  }


}
3.Action
//需要得到绝对路径path
       File reportFile = new File(path +"demo.jasper");

       JReportParam jreportParam = new JReportParam(reportFile, dataset);
       jreportParam.setParameters("ReportTitle", "my demo");
       httpServletRequest.setAttribute("jreportParam", jreportParam);

       actionForward = actionmapping.findForward(reportType);

JasperReport学习笔记5-其它数据生成动态的报表(WEB)

转载自:http://blog.csdn.net/xingfeng0501/article/details/7756004 1.空数据(Empty Datasources)  就是说JRXML文件...
  • u012377333
  • u012377333
  • 2015年11月10日 16:17
  • 787

开发者使用JasperReport——报表输出到网页

前言 上一篇简单介绍了如何使用jasperReport生成报表,那么本篇将会在其基础上将报表输出到web页面上。   正题    记得在JasperReport简介中我介绍了jasperRep...
  • zhaodandan19910306
  • zhaodandan19910306
  • 2013年02月27日 21:08
  • 2049

如何将jasperreport集成到spring mvc中并展示报表内容

我们现在很少会用到JasperReport,那么也更没有什么可能会使用servlet+jsp来呈现制作好的报表内容,现在spring和spiring mvc在web后端开发的地位如日中天,因此如果使用...
  • yan_tu
  • yan_tu
  • 2017年05月10日 15:20
  • 2112

开发者使用JasperReport——不同数据源之表格数据源

前言     前面的几篇我们讲解的都是一些普通简单格式的报表,但是有时我们的报表会要求是表格形式的,这时我们就需要用到我们的JRTableModelDataSource。   正题 跟之前的一...
  • zhaodandan19910306
  • zhaodandan19910306
  • 2013年04月24日 20:29
  • 1619

C++中vector的用法解析

本文实例展示了C++中的vector用法,分享给大家供大家参考。具体如下: 一、概述 vector是C++标准模板库中的部分内容,它是一个多功能的,能够操作多种数据结构和算法的模板类和函数库。ve...
  • liuweiyuxiang
  • liuweiyuxiang
  • 2016年10月04日 21:51
  • 2433

利用jasperReport制作web报表

1)给出自己制作的jasperReport的视图效果,方便对报表工具初期学习的选择。 2)自己制作报表的测试源码和所有相关学习资料,对应所有jar包,jasperReport版本。 ...
  • leixingbang1989
  • leixingbang1989
  • 2015年03月30日 09:15
  • 1829

开发者使用JasperReport——带参数查询数据库

前言 上一篇我们介绍了如何使用JasperReport来生成查询数据库的报表,今天我们在其基础上再稍进一步,那就是如何带参数查询数据库。 正题 跟上一篇一样,我们要生成报表需要以下几个步...
  • zhaodandan19910306
  • zhaodandan19910306
  • 2013年03月31日 10:46
  • 1748

jasper报表工具类

来源于:群共享(152281263) package com.hihsoft.sso.business.report.util; import java.io.File; impor...
  • sgp4205
  • sgp4205
  • 2014年03月26日 15:00
  • 997

Jasperreport导出pdf内容展示不完全处理

场景 测试过程发现,尽管已经设置如下配置: Position Type : Fix Relative to Top Stretch Type:Relative to  Band Height ...
  • wws900111
  • wws900111
  • 2017年03月09日 17:00
  • 697

Struts2常量的具体用法实例

Struts2常量的具体用法实例   指定Web应用的默认编码集,相当于调用HttpServletRequest的setCharacterEncoding方法 -->    ...
  • luoyejie
  • luoyejie
  • 2015年07月16日 22:45
  • 287
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:我的JasperReport的具体用法
举报原因:
原因补充:

(最多只允许输入30个字)