我的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如何获取jasper表格中title中的名字作为下载文件的名字

对于这个问题其中有两个难点:1,获取到jasper表格中title中的标题。2,如果中文标题,那么就需要下载文件的文件名是中文。 1,获取jasper表格中的标题 JasperRe...
  • yuliqi0429
  • yuliqi0429
  • 2015年12月07日 10:05
  • 1179

jasperreport的使用

/** * 打印年检单. * */ public void printCheckTasks() { try { String idString = request.getPa...
  • u014236541
  • u014236541
  • 2016年01月14日 17:23
  • 1100

jasperReport和JasperServer的使用实例

首先见第一个需求如下图所示: 一开始是选用Case When来实现分组(这里按季度分组)显示,如以下测试SQL: SELECT (CASE   WHEN (ob_created_time...
  • Cheney1993
  • Cheney1993
  • 2016年07月21日 17:58
  • 3364

开发者使用JasperReport——不同数据源之自定义数据源

前言     前面讲解了一些JasperReport给我们提供的一些实现好的数据源,当然如果我们有自己的特殊需要,还可以自定义数据源。   正题 跟之前的一样,我们要生成报表需要以下几个步骤:...
  • zhaodandan19910306
  • zhaodandan19910306
  • 2013年04月24日 20:34
  • 1697

用jasperreports在applet中实现打印功能开发总结

用jasperreports在applet中实现打印功能开发总结,写的很零散,主要记录我的心得。。。...
  • wangjian5748
  • wangjian5748
  • 2010年07月30日 16:29
  • 7348

jasperreport 生成报表三种方式,复制就可用。

自己把包先导入。不知道导什么包的可以百度, 第一个生成方式 ,读xml文件 @Autowired private static ServletContext servletContext = Cont...
  • oufua
  • oufua
  • 2015年08月09日 11:33
  • 308

利用jasperReport制作web报表

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

CYQ.Data V4系列全面开源(2013

致各位.NET开发者: 考虑到本人开源作品太多,个人维护力度有限,故自2013-08-04开始,开放原本需要授权使用的V4系列的最高版本V4.55的框架源码,同时也开放相对应的辅助工...
  • dyllove98
  • dyllove98
  • 2013年08月04日 21:00
  • 743

spring基本用法总结

使用两年spring后,发现对spring依旧陌生,遂重新总结spring基础用法 特性:1,依赖注入的核心机制;2,Aop的声明式事务管理;3与多种持久层结合使用;4,web MVC的优秀使用; ...
  • u010446936
  • u010446936
  • 2017年01月13日 17:11
  • 191

Jasperreport利用子报表实现合并行

最近,在用做报表,其中有一部分报表中需要合并行,其实用分组解决起来没什么难度.但是客户给的Excel就是那样的,没办法.百度.google,搜了一天,确实搜到了.有人已经实现了.还提供了代码.谢谢这位...
  • benbengou008
  • benbengou008
  • 2011年04月21日 16:53
  • 2710
收藏助手
不良信息举报
您举报文章:我的JasperReport的具体用法
举报原因:
原因补充:

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