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

相关文章

这15个Vue指令,让你的项目开发爽到爆

1. V-Hotkey 仓库地址: github.com/Dafrok/v-ho… Demo: 戳这里 https://dafrok.github.io/v-hotkey 安装: npm install --save v-hotkey 这个指令可以给组件绑定一个或多个快捷键。你想要通过按下 Escape 键后隐藏某个组件,按住 Control 和回车键再显示它吗?小菜一碟: <template

Hadoop企业开发案例调优场景

需求 (1)需求:从1G数据中,统计每个单词出现次数。服务器3台,每台配置4G内存,4核CPU,4线程。 (2)需求分析: 1G / 128m = 8个MapTask;1个ReduceTask;1个mrAppMaster 平均每个节点运行10个 / 3台 ≈ 3个任务(4    3    3) HDFS参数调优 (1)修改:hadoop-env.sh export HDFS_NAMENOD

嵌入式QT开发:构建高效智能的嵌入式系统

摘要: 本文深入探讨了嵌入式 QT 相关的各个方面。从 QT 框架的基础架构和核心概念出发,详细阐述了其在嵌入式环境中的优势与特点。文中分析了嵌入式 QT 的开发环境搭建过程,包括交叉编译工具链的配置等关键步骤。进一步探讨了嵌入式 QT 的界面设计与开发,涵盖了从基本控件的使用到复杂界面布局的构建。同时也深入研究了信号与槽机制在嵌入式系统中的应用,以及嵌入式 QT 与硬件设备的交互,包括输入输出设

OpenHarmony鸿蒙开发( Beta5.0)无感配网详解

1、简介 无感配网是指在设备联网过程中无需输入热点相关账号信息,即可快速实现设备配网,是一种兼顾高效性、可靠性和安全性的配网方式。 2、配网原理 2.1 通信原理 手机和智能设备之间的信息传递,利用特有的NAN协议实现。利用手机和智能设备之间的WiFi 感知订阅、发布能力,实现了数字管家应用和设备之间的发现。在完成设备间的认证和响应后,即可发送相关配网数据。同时还支持与常规Sof

【Prometheus】PromQL向量匹配实现不同标签的向量数据进行运算

✨✨ 欢迎大家来到景天科技苑✨✨ 🎈🎈 养成好习惯,先赞后看哦~🎈🎈 🏆 作者简介:景天科技苑 🏆《头衔》:大厂架构师,华为云开发者社区专家博主,阿里云开发者社区专家博主,CSDN全栈领域优质创作者,掘金优秀博主,51CTO博客专家等。 🏆《博客》:Python全栈,前后端开发,小程序开发,人工智能,js逆向,App逆向,网络系统安全,数据分析,Django,fastapi

活用c4d官方开发文档查询代码

当你问AI助手比如豆包,如何用python禁止掉xpresso标签时候,它会提示到 这时候要用到两个东西。https://developers.maxon.net/论坛搜索和开发文档 比如这里我就在官方找到正确的id描述 然后我就把参数标签换过来

业务中14个需要进行A/B测试的时刻[信息图]

在本指南中,我们将全面了解有关 A/B测试 的所有内容。 我们将介绍不同类型的A/B测试,如何有效地规划和启动测试,如何评估测试是否成功,您应该关注哪些指标,多年来我们发现的常见错误等等。 什么是A/B测试? A/B测试(有时称为“分割测试”)是一种实验类型,其中您创建两种或多种内容变体——如登录页面、电子邮件或广告——并将它们显示给不同的受众群体,以查看哪一种效果最好。 本质上,A/B测

Linux_kernel驱动开发11

一、改回nfs方式挂载根文件系统         在产品将要上线之前,需要制作不同类型格式的根文件系统         在产品研发阶段,我们还是需要使用nfs的方式挂载根文件系统         优点:可以直接在上位机中修改文件系统内容,延长EMMC的寿命         【1】重启上位机nfs服务         sudo service nfs-kernel-server resta

【区块链 + 人才服务】区块链集成开发平台 | FISCO BCOS应用案例

随着区块链技术的快速发展,越来越多的企业开始将其应用于实际业务中。然而,区块链技术的专业性使得其集成开发成为一项挑战。针对此,广东中创智慧科技有限公司基于国产开源联盟链 FISCO BCOS 推出了区块链集成开发平台。该平台基于区块链技术,提供一套全面的区块链开发工具和开发环境,支持开发者快速开发和部署区块链应用。此外,该平台还可以提供一套全面的区块链开发教程和文档,帮助开发者快速上手区块链开发。

Vue3项目开发——新闻发布管理系统(六)

文章目录 八、首页设计开发1、页面设计2、登录访问拦截实现3、用户基本信息显示①封装用户基本信息获取接口②用户基本信息存储③用户基本信息调用④用户基本信息动态渲染 4、退出功能实现①注册点击事件②添加退出功能③数据清理 5、代码下载 八、首页设计开发 登录成功后,系统就进入了首页。接下来,也就进行首页的开发了。 1、页面设计 系统页面主要分为三部分,左侧为系统的菜单栏,右侧