struts2+ireport进行报表开发

2024-02-05 14:18

本文主要是介绍struts2+ireport进行报表开发,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

首先去官方网站将所需要的资源包下载下来。
http://jasperforge.org/

然后,通过JasperReports产生一个jrxml文件(可以生成静态的,也可以生成与数据库对应的),本例生成一个与数据库MyDatabase中表student对应的classic.jrxml文件。

  1. <?xml version="1.0" encoding="UTF-8"  ?>  
  2.  <!-- Created with iReport - A designer for JasperReports -->  
  3.  <!DOCTYPE jasperReport PUBLIC "//JasperReports//DTD Report Design//EN" "http://jasperreports.sourceforge.net/dtds/jasperreport.dtd">  
  4.  <jasperReport  
  5.           name="classic"  
  6.           columnCount="1"  
  7.           printOrder="Vertical"  
  8.           orientation="Portrait"  
  9.           pageWidth="595"  
  10.           pageHeight="842"  
  11.           columnWidth="535"  
  12.           columnSpacing="0"  
  13.           leftMargin="30"  
  14.           rightMargin="30"  
  15.           topMargin="20"  
  16.           bottomMargin="20"  
  17.           whenNoDataType="NoPages"  
  18.           isTitleNewPage="false"  
  19.           isSummaryNewPage="false">  
  20.      <property name="ireport.scriptlethandling" value="0" />  
  21.      <property name="ireport.encoding" value="UTF-8" />  
  22.      <import value="java.util.*" />  
  23.      <import value="net.sf.jasperreports.engine.*" />  
  24.      <import value="net.sf.jasperreports.engine.data.*" />  
  25.      <queryString><![CDATA[select * from student]]></queryString>  
  26.      <field name="xuehao" class="java.lang.String"/>  
  27.      <field name="userName" class="java.lang.String"/>  
  28.      <field name="userPwd" class="java.lang.String"/>  
  29.      <field name="czxt" class="java.lang.Integer"/>  
  30.      <field name="wjyl" class="java.lang.Integer"/>  
  31.      <field name="sjjg" class="java.lang.Integer"/>  
  32.          <group  name="xuehao" >  
  33.              <groupExpression><![CDATA[$F{xuehao}]]></groupExpression>  
  34.              <groupHeader>  
  35.              <band height="25"  isSplitAllowed="true" >  
  36.                  <rectangle>  
  37.                      <reportElement  
  38.                          mode="Opaque"  
  39.                          x="0"  
  40.                          y="0"  
  41.                          width="535"  
  42.                          height="25"  
  43.                          forecolor="#8080FF"  
  44.                          backcolor="#000000"  
  45.                          key="rectangle"/>  
  46.                      <graphicElement stretchType="NoStretch">  
  47.                      <pen lineWidth="0.0" lineStyle="Solid"/>  
  48.  </graphicElement>  
  49.                  </rectangle>  
  50.                  <staticText>  
  51.                      <reportElement  
  52.                          x="3"  
  53.                          y="2"  
  54.                          width="96"  
  55.                          height="23"  
  56.                          forecolor="#FFFFFF"  
  57.                          backcolor="#FFFFFF"  
  58.                          key="staticText"/>  
  59.                      <box>                   <topPen lineWidth="0.0" lineStyle="Solid" lineColor="#000000"/>  
  60.                      <leftPen lineWidth="0.0" lineStyle="Solid" lineColor="#000000"/>  
  61.                      <bottomPen lineWidth="0.0" lineColor="#000000"/>  
  62.                      <rightPen lineWidth="0.0" lineStyle="Solid" lineColor="#000000"/>  
  63.  </box>  
  64.                      <textElement>  
  65.                          <font size="16"/>  
  66.                      </textElement>  
  67.                  <text><![CDATA[xuehao]]></text>  
  68.                  </staticText>  
  69.          .   
  70.          .   
  71.          .   
  72.          .   
  73.                  <line direction="TopDown">  
  74.                      <reportElement  
  75.                          x="0"  
  76.                          y="3"  
  77.                          width="535"  
  78.                          height="0"  
  79.                          key="line"/>  
  80.                      <graphicElement stretchType="NoStretch"/>  
  81.                  </line>  
  82.                  <textField isStretchWithOverflow="false" pattern="" isBlankWhenNull="false" evaluati hyperlinkType="None"  hyperlinkTarget="Self" >  
  83.                      <reportElement  
  84.                          x="1"  
  85.                          y="6"  
  86.                          width="209"  
  87.                          height="19"  
  88.                          forecolor="#000000"  
  89.                          backcolor="#FFFFFF"  
  90.                          key="textField"/>  
  91.                      <box>                   <topPen lineWidth="0.0" lineStyle="Solid" lineColor="#000000"/>  
  92.                      <leftPen lineWidth="0.0" lineStyle="Solid" lineColor="#000000"/>  
  93.                      <bottomPen lineWidth="0.0" lineColor="#000000"/>  
  94.                      <rightPen lineWidth="0.0" lineStyle="Solid" lineColor="#000000"/>  
  95.  </box>  
  96.                      <textElement>  
  97.                          <font size="10"/>  
  98.                      </textElement>  
  99.                  <textFieldExpression   class="java.util.Date"><![CDATA[new Date()]]></textFieldExpression>  
  100.                  </textField>  
  101.              </band>  
  102.          </pageFooter>  
  103.          <summary>  
  104.              <band height="0"  isSplitAllowed="true" >  
  105.              </band>  
  106.          </summary>  
  107.  </jasperReport>  




Java的环境配置好后,就可以MyCompile.java产生PDF、XML、EXCEL等格式。

  1. /**  
  2.   * @作者 Jcuckoo  
  3.   * @创建日期 2008-12-08  
  4.   * @版本 V 1.0  
  5.   */  
  6.  public class MyCompile {   
  7.      public static void main(String[] args) throws Exception {   
  8.          //导出jasper格式   
  9.          JasperCompileManager.compileReportToFile("classic.jrxml","classic.jasper");   
  10.          System.out.println("成功编译成JasperReport文件(classic.jasper)");   
  11.          //填充时,使用数据源数据连接,产生带有数据的jasper   
  12.          JasperFillManager.fillReportToFile("classic.jasper" , null ,dbPool.getConnection());   
  13.          System.out.println("成功填充了一个报表文件(*.jrprint)");   
  14.          //填充时,即使没有使用数据源,也必须指定一个新建的JREmptyDataSource实例,而不能直接使用null   
  15.          //JasperRunManager.runReportToPdfFile("classic.jasper" , "classic.pdf" , null , new JREmptyDataSource());   
  16.          JasperRunManager.runReportToPdfFile("classic.jasper" , "classic.pdf" , null , dbPool.getConnection());   
  17.          System.out.println("成功编译成JasperReport文件Jasper2Pdf");   
  18.          //导出XML格式   
  19.          JasperExportManager.exportReportToXmlFile("classic.jrprint" , "classic.xml" , true);   
  20.          System.out.println("成功创建了一个XML文档");   
  21.          //到处excel格式   
  22.          JasperPrint jasperPrint = (JasperPrint)JRLoader.loadObject("classic.jrprint");   
  23.          JRXlsExporter exporter = new JRXlsExporter();   
  24.          //设置要导出的jasperPrint   
  25.          exporter.setParameter(JRExporterParameter.JASPER_PRINT, jasperPrint);   
  26.          exporter.setParameter(JRExporterParameter.OUTPUT_FILE_NAME, "classic.xls");   
  27.          exporter.setParameter(JRXlsExporterParameter.IS_ONE_PAGE_PER_SHEET, Boolean.TRUE);   
  28.          exporter.exportReport();   
  29.          System.out.println("成功创建了一个excel文档");   
  30.          JRViewer jr = new JRViewer("classic.jrprint" , false);   
  31.          jr.setPreferredSize(new Dimension(900730));    
  32.          JFrame jf = new JFrame("报表预览");   
  33.          jf.add(jr);   
  34.          jf.pack();   
  35.          jf.setVisible(true);   
  36.      }   
  37.  }  

 



将Strut2的环境配置好后,就可以通过web的方式进行访问了。
index.jsp

  1. <body>   
  2.   <a href="htmlexport.action">html格式报表</a>   
  3.   <hr>   
  4.   <a href="pdfexport.action">pdf格式报表</a>   
  5.   <hr>   
  6.   <a href="xmlexport.action">XML格式报表</a>   
  7.    <hr>   
  8.   <a href="excelexport.action">excel格式报表</a>   
  9. </body>  



struts.xml

  1. <package name="jCuckoo" extends="jasperreports-default">//此处要注意。   
  2.     <action name="htmlexport" class="jCuckoo.JasperAction">  
  3.         <result name="success" type="jasper">  
  4.             <param name="location">jasper/classic.jasper</param>  
  5.             <param name="format">HTML</param>  
  6.             <param name="dataSource">studentList</param>  
  7.         </result>  
  8.     </action>  
  9.     <action name="pdfexport" class="jCuckoo.JasperAction">  
  10.         <result name="success" type="jasper">  
  11.             <param name="location">jasper/classic.jasper</param>  
  12.             <param name="format">PDF</param>  
  13.             <param name="dataSource">studentList</param>  
  14.         </result>  
  15.     </action>  
  16.     <action name="xmlexport" class="jCuckoo.JasperAction">  
  17.         <result name="success" type="jasper">  
  18.             <param name="location">jasper/classic.jasper</param>  
  19.             <param name="format">XML</param>  
  20.             <param name="dataSource">studentList</param>  
  21.         </result>  
  22.     </action>  
  23.     <action name="excelexport" class="jCuckoo.JasperAction">  
  24.         <result name="success" type="jasper">  
  25.             <param name="location">jasper/classic.jasper</param>  
  26.             <param name="format">XLS</param>  
  27.             <param name="dataSource">studentList</param>  
  28.         </result>  
  29.     </action>  
  30. </package>  



struts2-jasperreports-plugin-2.0.8.jar中的struts2-jasperreports-plugin-2.0.8.jar需要修改成:
该处要注意

  1. <package name="jasperreports-default" extends="struts-default">  
  2.          <result-types>  
  3.              <result-type name="jasper" class="org.apache.struts2.views.jasperreports.JasperReportsResult"/>  
  4.          </result-types>  
  5.      </package>  


JasperAction.java

  1. public class JasperAction extends ActionSupport   
  2.  {   
  3.      public List getStudentList()   
  4.      {   
  5.          StudentDAO studao=new StudentDAO();   
  6.          return studao.getAllStudent();   
  7.      }   
  8.      public String execute() throws Exception {   
  9.              return SUCCESS;   
  10.      }   
  11.  }  



StudentDAO.java

  1. public class StudentDAO {   
  2.      public StudentDAO() {   
  3.      }   
  4.      Connection conn;   
  5.      Statement st;   
  6.      ResultSet rs;   
  7.      public List getAllStudent(){   
  8.          String sql="select * from student ";   
  9.          List students=new ArrayList();   
  10.          try {   
  11.              conn=dbPool.getConnection();   
  12.              st=conn.createStatement();   
  13.              rs=st.executeQuery(sql);   
  14.              while(rs.next()){   
  15.                  Student student=new Student(rs.getString("xuehao"),   
  16.                          rs.getString("userName"),   
  17.                          rs.getString("userPwd"),   
  18.                          rs.getInt("czxt"),   
  19.                          rs.getInt("wjyl"),   
  20.                          rs.getInt("sjjg")   
  21.                  );   
  22.                  students.add(student);   
  23.              }   
  24.          } catch (SQLException e) {   
  25.              try {   
  26.                  conn.close();   
  27.              } catch (SQLException e1) {   
  28.                  e1.printStackTrace();   
  29.              }   
  30.              e.printStackTrace();   
  31.              return null;   
  32.          }   
  33.          return students;   
  34.      }   
  35.  }  



dbPool.java

  1. /**  
  2.   * @作者 Jcuckoo  
  3.   * @创建日期 2008-12-06  
  4.   * @版本 V 1.0  
  5.   */  
  6.  public class dbPool{   
  7.      private static dbPool instance = null;   
  8.      //取得连接   
  9.      public static ResultSet getAllStudent(){   
  10.          String sql="select * from student ";   
  11.          Connection conn=null;   
  12.          Statement st;   
  13.          ResultSet rs=null;   
  14.          try {   
  15.              conn=dbPool.getConnection();   
  16.              st=conn.createStatement();   
  17.              rs=st.executeQuery(sql);   
  18.              return rs;   
  19.          } catch (SQLException e) {   
  20.              try {   
  21.                  conn.close();   
  22.              } catch (SQLException e1) {   
  23.                  e1.printStackTrace();   
  24.              }   
  25.              e.printStackTrace();   
  26.              return null;   
  27.          }   
  28.      }   
  29.      public static synchronized Connection getConnection() {   
  30.          if (instance == null){   
  31.              instance = new dbPool();   
  32.          }   
  33.          return instance._getConnection();   
  34.      }   
  35.      private dbPool(){   
  36.          super();   
  37.      }   
  38.      private  Connection _getConnection(){   
  39.          try{   
  40.              String sDBDriver  = "com.microsoft.jdbc.sqlserver.SQLServerDriver";   
  41.              String sConnection   = "jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=MyDatabase";   
  42.              String sUser = "sa";   
  43.              String sPassword = null;   
  44.              Class.forName(sDBDriver).newInstance();   
  45.              return DriverManager.getConnection(sConnection,sUser,sPassword);   
  46.          }   
  47.          catch(Exception se){   
  48.              System.out.println(se);   
  49.              return null;   
  50.          }   
  51.      }   
  52.      //释放资源   
  53.      public static void dbClose(Connection conn,PreparedStatement ps,ResultSet rs)   
  54.      throws SQLException   
  55.      {   
  56.            rs.close();   
  57.            ps.close();   
  58.            conn.close();   
  59.        }   
  60.      }  

这篇关于struts2+ireport进行报表开发的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/681176

相关文章

Python+wxPython开发一个文件属性比对工具

《Python+wxPython开发一个文件属性比对工具》在日常的文件管理工作中,我们经常会遇到同一个文件存在多个版本,或者需要验证备份文件与源文件是否一致,下面我们就来看看如何使用wxPython模... 目录引言项目背景与需求应用场景核心需求运行结果技术选型程序设计界面布局核心功能模块关键代码解析文件大

C++多线程开发环境配置方法

《C++多线程开发环境配置方法》文章详细介绍了如何在Windows上安装MinGW-w64和VSCode,并配置环境变量和编译任务,使用VSCode创建一个C++多线程测试项目,并通过配置tasks.... 目录下载安装 MinGW-w64下载安装VS code创建测试项目配置编译任务创建 tasks.js

JAVA SpringBoot集成Jasypt进行加密、解密的详细过程

《JAVASpringBoot集成Jasypt进行加密、解密的详细过程》文章详细介绍了如何在SpringBoot项目中集成Jasypt进行加密和解密,包括Jasypt简介、如何添加依赖、配置加密密钥... 目录Java (SpringBoot) 集成 Jasypt 进行加密、解密 - 详细教程一、Jasyp

linux实现对.jar文件的配置文件进行修改

《linux实现对.jar文件的配置文件进行修改》文章讲述了如何使用Linux系统修改.jar文件的配置文件,包括进入文件夹、编辑文件、保存并退出编辑器,以及重新启动项目... 目录linux对.jar文件的配置文件进行修改第一步第二步 第三步第四步总结linux对.jar文件的配置文件进行修改第一步进

Go语言中如何进行数据库查询操作

《Go语言中如何进行数据库查询操作》在Go语言中,与数据库交互通常通过使用数据库驱动来实现,Go语言支持多种数据库,如MySQL、PostgreSQL、SQLite等,每种数据库都有其对应的官方或第三... 查询函数QueryRow和Query详细对比特性QueryRowQuery返回值数量1个:*sql

一文详解Python如何开发游戏

《一文详解Python如何开发游戏》Python是一种非常流行的编程语言,也可以用来开发游戏模组,:本文主要介绍Python如何开发游戏的相关资料,文中通过代码介绍的非常详细,需要的朋友可以参考下... 目录一、python简介二、Python 开发 2D 游戏的优劣势优势缺点三、Python 开发 3D

基于Python开发Windows自动更新控制工具

《基于Python开发Windows自动更新控制工具》在当今数字化时代,操作系统更新已成为计算机维护的重要组成部分,本文介绍一款基于Python和PyQt5的Windows自动更新控制工具,有需要的可... 目录设计原理与技术实现系统架构概述数学建模工具界面完整代码实现技术深度分析多层级控制理论服务层控制注

Java中的分布式系统开发基于 Zookeeper 与 Dubbo 的应用案例解析

《Java中的分布式系统开发基于Zookeeper与Dubbo的应用案例解析》本文将通过实际案例,带你走进基于Zookeeper与Dubbo的分布式系统开发,本文通过实例代码给大家介绍的非常详... 目录Java 中的分布式系统开发基于 Zookeeper 与 Dubbo 的应用案例一、分布式系统中的挑战二

Python进行word模板内容替换的实现示例

《Python进行word模板内容替换的实现示例》本文介绍了使用Python自动化处理Word模板文档的常用方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友... 目录技术背景与需求场景核心工具库介绍1.获取你的word模板内容2.正常文本内容的替换3.表格内容的

Git进行版本控制的实战指南

《Git进行版本控制的实战指南》Git是一种分布式版本控制系统,广泛应用于软件开发中,它可以记录和管理项目的历史修改,并支持多人协作开发,通过Git,开发者可以轻松地跟踪代码变更、合并分支、回退版本等... 目录一、Git核心概念解析二、环境搭建与配置1. 安装Git(Windows示例)2. 基础配置(必