struts2+jasperreport集成方案

Struts2与JasperReport整合所需jar包指南 本文还有配套的精品资源,点击获取 简介:Struts2是一个强大的Java Web应用程序MVC框架,而JasperReport是一款开源报表工具。将二者整合,可以实现动态报告的生成和展示。在整合过程中,需要特定jar包以确保框架和工具之间的通信与协同工作。本文将详细介绍整合Struts2与JasperReport所必需的关键jar包及其整合步骤,同时提供关于报表模板设计、... 阅读详情

web项目需要增加报表,报表分为明细表、统计表(多级表头)和图形表(柱状图),思来想去选择了集成jasperreport,这样可以方便后期维护及扩展,虽然初期集成和上手麻烦点,但是可以使用iReport设计器还是省了不少工作。

注意,ireport5.6.0 启动需要1.7jdk,1.8会一闪而过。

1. jasperreport的依赖,集成过程大部分错误都是缺少jar包,maven列表:

<dependency>
  <groupId>net.sf.jasperreports</groupId>
  <artifactId>jasperreports</artifactId>
  <version>5.6.0</version>
</dependency>

<dependency>
  <groupId>org.codehaus.groovy</groupId>
  <artifactId>groovy-all</artifactId>
  <version>2.0.1</version>
</dependency> 

<dependency>
  <groupId>org.apache.struts</groupId>
  <artifactId>struts2-jasperreports-plugin</artifactId>
  <version>2.5.10.1</version>
</dependency>

<dependency>
  <groupId>joda-time</groupId>
  <artifactId>joda-time</artifactId>
  <version>2.10.1</version>
</dependency>

一共24个依赖jar包,如下图:
jasper_report依赖包

2. struts.xml中基本定义要增加jasper结果类型,最好放在package的第一行避免报错。

<package name="system_default" extends="struts-default">
		<result-types>
			<result-type name="jasper" class="org.apache.struts2.views.jasperreports.JasperReportsResult"/>
		</result-types>
</package>

3. action的两种配置方式java代码构造数据和直接连接数据库:

	<!--1. 程序构造数据-->
	<action name="jasper_report_index"
		class="com.bnu.questionnaire.plugin.jasperreport.action.JasperReportAction"
		method="getInfoCheckIndex">
		<result>/${html}</result>
	</action>

	<action name="jasper_report_getInfoCheckData" class="com.bnu.questionnaire.plugin.jasperreport.action.JasperReportAction">
		<result name="success" type="jasper">
			<!-- location指定iReport设计器编译产生的jasper报表文件在项目目录的位置 -->
			<!-- /项目根目录/${location} -->
			<!-- http://localhost:8088/项目名/${location} -->
			<param name="location">/jasper/report1.jasper</param>
			<!--  dataSource指定数据源action中函数方法,反射getXXXX()方法 -->
			<!-- 如下配置示例反射action中的getReportData()方法 -->
			<param name="dataSource">reportData</param>
			<!-- format指定返回类型,默认PDF -->
			<param name="format">HTML</param>
			<!-- imageServletUrl指定图片servlet地址 -->
			<!-- 不配置会出现报表背景及图形表图片无法显示情况 -->
			<param name="imageServletUrl">
				<![CDATA[/image?image=]]>
			</param>
		</result>
	</action>
	<!--2. 直连数据库-->
	<action name="jasper_report_infocheck" class="com.bnu.questionnaire.plugin.jasperreport.action.JasperReportAction">
		<result name="success" type="jasper">
			<param name="location">/jasper/report1.jasper</param>
			<!-- connection指定数据链接,使用直连数据库的方式,反射action中getXXXXX()方法,应返回数据库Connection对象 -->
			<param name="connection">jasperConnection</param>
			<param name="format">HTML</param>
			<!--ireport设计时sql语句中包含查询条件$P{year}和$P{region}-->
			<!--也可以通过$P!{where语句}直接替换为查询语句,例如:ireport中设计语句为"select * from tableName $P!{where}",那么action返回参数可以直接定义为map.put("where","where param1 = 'value1' ")-->
			<param name="reportParameters">Params</param>
			<param name="imageServletUrl">
				<![CDATA[/image?image=]]>
			</param>	
		</result>
	</action>

3. web.xml关于图片的配置,不配置无法正常显示charts

<!--jasperreport-->
<servlet>
	<servlet-name>JasperReportImageServlet</servlet-name>
	<servlet-class>
		net.sf.jasperreports.j2ee.servlets.ImageServlet
	</servlet-class>
</servlet>
<servlet-mapping>
	<servlet-name>JasperReportImageServlet</servlet-name>
	<url-pattern>/image</url-pattern>
</servlet-mapping>

4. Action伪代码

    /**
     * Using:报表主页加载数据
     *
     * @return
     */
    public List<DemoModel> getReportData() throws Exception {
        List<DemoModel> demoModelList = new ArrayList<>();
        demoModelList.add(new DemoModel("test1","100001","李一","oa"));
        demoModelList.add(new DemoModel("test2","100002","王二","oa"));
        demoModelList.add(new DemoModel("test3","100003","张三","oa"));
        return demoModelList;
    }

    /**
     * Using:jasperReport直连数据库,返回Connection对象。
     *
     * @return Connection
     * @throws Exception
     */
    public Connection getJasperConnection() throws Exception{
        String region = this.getRequest().getParameter("region");
        String year = this.getRequest().getParameter("year");
        Params.put("year", year);
        Params.put("region", region);
        Connection connection = this.getConnection();
        return connection;
    }
    
    /**
    * Using:定义返回报表模板的参数
    **/
    private HashMap Params = new HashMap();

    public HashMap getParams() {
        return Params;
    }
Maven、Struts2、JasperReport与iReport整合:一站式Web应用开发实战 Apache Maven是一个项目管理和构建自动化工具,它依赖于项目对象模型(POM)的概念,并利用一个中央仓库来管理项目构建的各个阶段。它简化了项目的构建过程,如编译、测试、打包等。Maven通过定义生命周期和插件机制,允许开发者专注于项目的开发工作,而不是构建配置。自定义拦截器需要实现接口或继承类。在实现拦截器逻辑时,intercept方法将被调用。开发完成后,需要在struts.xml中进行配置:</action>在这个配置中,拦截器被添加到自定义的拦截器栈。 阅读详情

相关推荐

jasper report用到的5个jar包

用jasper report生成报表需要的jar包,都在这

整合Struts2+JasperReport Web报表应用示例

整合Struts2+JasperReport Web报表应用示例   JasperReports作为一种优秀且开源的报表引擎,不利用太可惜了。同时,借助开源的JasperReports模板设计利器iReports,可以可视化的设计报表模板。基于Web的报表在很多项目中都是需要

924

jasperreports_jar

Struts2框架使用的到的jasperreport的jar包

Ubuntu 16.04 安装 Node.js:nvm 为主、PPA 为辅、apt 避坑指南

Node.js 是 JavaScript 运行时环境,支撑现代前端构建、服务端开发与 CLI 工具链;其核心原理是基于 V8 引擎的事件驱动执行模型,通过 npm 实现依赖管理与生态集成。技术价值在于跨平台一致性、轻量级部署及与 Web 生态无缝协同。典型应用场景包括 Vue/React 项目构建、Express 后端服务、CI/CD 流水线执行及 Docker 容器化交付。在 Ubuntu 16.04 这类已停止官方支持但仍在生产环境广泛使用的 LTS 系统中,因系统源仅提供过时的 Node.js v4.

diejiankuai3444的博客 498

JasperReport整合Struts2所用jar包 iTextAsian.jar sqljdbc4.jar

asm-2.2.jar commons-collections-2.1.1.jar commons-digester-1.7.jar commons-fileupload-1.2.1.jar commons-logging-1.0.4.jar freemarker-2.3.15.jar groovy-all-1.5.5.jar iText-2.1.7.jar iTextAsian.jar jasperreports-3.7.1.jar log4j-1.2.15.jar ognl-2.7.3.jar poi-3.5-FINAL-20090928.jar sqljdbc4.jar struts2-core-2.1.8.1.jar struts2-jasperreports-plugin-2.1.8.1.jar xwork-core-2.1.6.jar iTextAsianCmaps.jar

struts2-jasperreports-plugin-2.1.6.jar 修改了html格式图片无法显示

jasperReport生成饼图等图片时,如果有图片,则html页面显示不了,本包修改了源码,解决了html格式输出图片的正常显示。

Struts2+JasperReports详细参数解析

此篇文章翻译与Apache官方网站的JasperReports API。JasperReports在线API地址为:http://struts.apache.org/2.1.8.1/struts2-plugins/struts2-jasperreports-plugin/apidocs/org/apache/struts2/views/jasperreports/JasperReportsResu

J-胖子的专栏 2128

struts2-jasperreports-plugin-2.0.14.jar

struts2-jasperreports-plugin ssh ireport

Struts2整合JasperReport

先介绍一下它们的关系:jasperReport:一个开源的,强大灵活的报表类库,能生成html,pdf等等其它格式报表。官网:http://jasperforge.org/projects/jasperreports下载时把整个工程下下来。如图:ireport:是jasperReport的可视化设计工具,使用ireport,可以更快地设计出想要的报表下载:http://jasperforge.org/projects/ireport注:我一开始的时候下的是最新版3.7.1,但后来运行老出问题,换了3.6版就

§封Ja葬va§ 5294

ThinkPHP+Layui开发的ERP管理系统

ERP采购生产销售系统,一款基于ThinkPHP+Layui开发的ERP管理系统,帮助中小企业实现ERP管理规范化,此系统能为你解决五大方面的经营问题:1.采购管理 2.销售管理 3.仓库管理 4.资金管理 5.生产管理,适用于:服装鞋帽、化妆品、机械机电、家具装潢、建材行业、快销品、母婴用品、办公用品、汽配汽修、生鲜农贸、手机通讯、数码家电、医药用品、制造业、信息技术服务行业等。提供全部无加密服务端和前端源代码,独立部署,不受限制。

u011092458的博客 788

从零到一:在Ubuntu 20.04上搭建ROS1与PX4无人机开发环境

本文详细指导如何在Ubuntu 20.04系统上搭建完整的ROS1与PX4无人机开发环境。内容涵盖ROS Noetic安装、PX4固件源码编译、MAVROS通信桥接以及QGroundControl地面站的配置,并通过Gazebo仿真完成全链路联调测试,为无人机算法开发与验证提供稳定可靠的基础平台。

weixin_29292431的博客 167

JasperReport+Struts2集成 生成报表【转】

之前生成报表,数据源都是通过SQL查询获得,把SQL语句写在报表模板里。这次的数据源是需要调用存储过程,导出Excel报表,于是傻眼了。ireport里没法call 存储过程啊,网上查说可以封装成JavaBean,但是看了步骤好麻烦。同事有用jxl直接导出Excel的,不用jasperreport报表工具,觉得还是比较死板。后来问了岑同学,才知道有这么简便的方法,struts2原来是整合了jasp

417

点云配准实战:用DGCNN+Transformer+SVD搞定3D模型对齐(附PyTorch代码)

本文详细介绍了基于深度学习的点云配准实战方法,重点解析了Deep Closest Point (DCP)模型。该模型融合了DGCNN、Transformer和可微分SVD三大核心模块,能够端到端地预测点云间的刚性变换,有效克服传统ICP算法对初始位置敏感、易陷入局部最优的缺点。文章提供了完整的PyTorch代码实现、ModelNet40数据集处理、训练策略及显存优化技巧,旨在帮助开发者在机器人、自动驾驶等领域实现精准的3D模型对齐。

weixin_29061041的博客 153

Struts+Jasperreport配置

Struts+Jasperreport配置: 采用struts2 版本2.1.8,Jasperreport5.0 由于采用对于现在而言较新的版本,所以在引包和配置方面需要注意一些 在struts2中,最好不要使用编译器自带的框架导入。不然会引起包冲突或者是某些包的版本过低而报错的问题 (碰到自带框架的JSON版本过低。删除低版JSON后就可正常运行) 使用ireport5工具生成.jas

一步一步学习C/C++;一步一步深入了解linux 1159

手把手教你用Silvaco Atlas复现GaN蓝光LED仿真:从网格划分到光谱分析全流程避坑

本文详细介绍了如何使用Silvaco Atlas进行GaN蓝光LED仿真,从网格划分到光谱分析的全流程避坑指南。重点讲解了网格划分技巧、材料参数设置、极化效应处理以及结果分析方法,帮助用户快速掌握半导体器件仿真技术,提升研发效率。

weixin_42552716的博客 223

MATLAB 基于 Baker 映射和 Logistic 混沌序列的图像加解密实现

图像加密是信息安全领域的重要研究方向,在数字版权保护、隐私保护等领域有着广泛应用。本文将介绍基于 MATLAB 的 Baker 映射和 Logistic 混沌序列的图像加解密算法,该算法利用混沌系统的初值敏感性和伪随机性,能够有效地对图像进行加密和解密。基于 Baker 映射和 Logistic 混沌序列的图像加解密算法是一种有效的方法,可以应用于数字版权保护、隐私保护等领域。MATLAB 提供了强大的工具和函数,可以方便地实现该算法。

走向CTO的路上... 935

JasperReport:几个莫名其妙的问题的解决

JasperReport各种莫名奇妙问题的解决 JasperReportC/S报表struts2struts2-jasperreport-plugin 也许你不曾遇到如题问题,那恭喜你,但你是否会疑惑为何我没有遇到而你们却遇到这种问题呢,我们可都是应用的struts2框架哦!!!是啊,为什么呢?有兴趣的不妨看看这篇博文http://peterliuye.javaeye.com...

熊诗言的博客 7578

使用PostgreSQL构建高可用数据库集群

在现代企业级应用中,数据库的高可用性已成为业务连续性的核心要求。PostgreSQL作为一款功能强大的开源关系型数据库,其高可用架构的设计直接影响着系统的稳定性和可靠性。

九天的专栏 1258

Struts2整合jasperreport html展示图片不显示的解决办法

最近用ireport5.0做了一个柱状图的报表,用ireport预览功能显示没问题。 但是用Struts2集成jasperreport(struts2仅仅用它的跳转功能),展示成html格式的时候,柱状图显示不出来。 在网上查了很多资料,做了一些总结。 解决办法如下: 1.在web.xml中添加              ImageServlet         net.sf

代码的艺术 2533

开源大语言模型GLM-5:从架构解析到部署微调全指南

大语言模型(LLM)作为当前人工智能领域的核心技术,通过海量数据预训练获得强大的语言理解和生成能力。其核心原理基于Transformer架构,通过自注意力机制捕捉长距离依赖关系,在通用语言任务上展现出卓越性能。这一技术价值在于为开发者提供了强大的基座模型,能够通过微调快速适配特定领域需求,显著降低AI应用开发门槛。在实际应用场景中,大模型被广泛用于智能对话、代码生成、内容创作等任务。本文以开源项目GLM-5为例,深入探讨其架构特点,并详细介绍了如何使用LoRA技术进行参数高效微调,以及通过量化优化实现模型在

weixin_28683165的博客 350

STM32 IIC电量计LTC2944

LTC2944是一款电池电量计,设计用于端电压为3.6V至60V的多节电池。它测量电池充电和放电、电池电压、电流和自身温度。精密模拟库仑计数器通过电池正极端子与负载或充电器之间的检测电阻器对电流进行积分。电池电压、电池电流和硅温度由内部ADC测量。

baidu_34971492的博客 3161

Struts2向JasperReport传参数配置

Recently I spent a whole day searching for solutions and experimenting with solutions for how to pass additional report parameters to a Jasper Report from the Struts 2 framework. It took 8 hours because I had to piece together the information that I needed

好记性不如烂笔头 6764

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

JasperReport 和struts2的整合

JasperReport是一个报表制作程序。用户需要按照它制定的规则编写一个xml文件,然后得到用户需要输出的格式文件。而iReport是一个制作JasperReport的xml文件的可视化开发 工具,该库完全利用Java编写。可以用于在各种Java应用程序中,包括J2EE、WEB应用程序中生成动态内容。 1.iReort。 Report Life Cycle Before we start working with iReport, let's learn about the life c

py330316117的专栏 1636

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

上一篇: Java基础——继承
下一篇: Java基础——接口
Droy`Z
博客等级 码龄19年 75粉丝 57原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值