Ureport报表设计器
1.组件介绍
Ureport2 报表设计器是一个基于 WEB 的在线报表设计器,其具有良好的界面设计和强大的报表设计功能,支持报表多种格式导出(分页)、报表通用性设计等,Ureport2 支持简单、复杂报表的设计,能够很好地嵌合实际业务需求,其报表设计可通过纯 sql 或者是配置的方式实现,以此可针对不同的人员进行管理。
在应用上将UReport报表设计器整合到已有项目并非一件难事,只需要通过简单的配置便可完成,主要的工作量在于后期报表的设计、维护,以及UReport2报表设计器的学习需要耗费一定的时间和精力,需要开发人员了解报表设计的流程、原理,掌握排查报表设计错误的方法,熟练应用
与实际业务整合
针对多租户、复杂报表设计场景:Ureport2 可在工程中自定义报表存储器和数据源,在代码逻辑层模拟实现多租户概念(不同的租户访问不同的报表存储器、数据源信息),如果要结合需求实现多租户概念,则相应需要额外对应的维护页面与接口设计
针对大数据量数据处理还存在一定的问题,其中涉及缓存概念,有时候处理特大数据量的时候后台报错,考虑需要深入UReport源码分析或者是相关配置调整;且其提供的图形统计图显示相对EChart而言并不太友好,与实际业务的整合、数据的处理还需要时间的验证,毕竟还需要考虑额外诸多因素
官方学习渠道
ureport
2.实践配置
SSM框架整合UReport报表设计器
构建步骤
1 2 3
| 1.新建一个maven web项目,引入ureport2包和数据库驱动包 2.在spring配置文件中引入ureport2配置文件 3.在web.xml中配置spring&ureport2,加载组件、配置映射
|
构建参考
<1>新建maven web项目,在pom.xml中引入依赖
1 2 3 4 5
| <dependency> <groupId>com.bstek.ureport</groupId> <artifactId>ureport2-console</artifactId> <version>[version]</version> </dependency>
|
<2>引入UReport相关的配置文件
ureport的配置文件引入方式有三种
直接在web.xml中加载ureport-console-context.xml
文件(针对普通的Maven工程配置,没有采用spring文件)
1 2 3 4 5 6 7
| <listener> <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class> </listener> <context-param> <param-name>contextConfigLocation</param-name> <param-value>classpath:ureport-console-context.xml</param-value> </context-param>
|
在已有的spring配置文件中导入数据
1
| <import resource="classpath:ureport-console-context.xml" />
|
如果没有spring配置文件,直接创建一个context.xml
1 2 3 4 5 6
| <?xml version="1.0" encoding="UTF-8"?><beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsd "> <import resource="classpath:ureport-console-context.xml" /></beans>
|
基于这种方式,在SSM整合中为了避免配置文件混乱,也避免改动原有ssm配置,可以单独在resources目录下创建一个文件夹ureport
存放ureport-custom-context.xml配置文件以编辑相关的ureport配置,并在web.xml中配置相应的全局参数(必须在context-param中配置加载文件)
<3>在web.xml文件中配置UReport的Servlet
1 2 3 4 5 6 7 8
| <servlet> <servlet-name>ureportServlet</servlet-name> <servlet-class>com.bstek.ureport.console.UReportServlet</servlet-class> </servlet> <servlet-mapping> <servlet-name>ureportServlet</servlet-name> <url-pattern>/ureport/*</url-pattern> </servlet-mapping>
|
此处对已有的SSM项目整合做说明:
无论是以上哪种方式实现,必须保证在web.xml需要加载相应的spring配置文件,否则项目在启动的时候就会报视图解析失败,没有相应的designer
在整合启动的过程中可能由于maven相关jar包没有正常导入,导致ureport依赖的相关jar包非正常导入,项目启动报错(删除maven仓库的内容,重新导入jar包)
以下简单对整合过程中可能遇到的问题做简单的说明
问题1:指定属性无法找到
问题说明:启动的时候如果报找不到指定的属性:则需要在属性配置的时候需要不存在(未配置)的属性(在applicationContext-dao.xml、springmvc.xml下加载了属性文件,添加属性忽略掉没有定义的属性查找),报错内容如下所示
问题分析:是由于在整合的过程中Ureport报表设计器需要指定的属性并没有在自己搭建的工程中指定,因而报错,针对不同的工程进行调整
问题2:404或指定designer设计器不存在
问题说明:多模块工程构建场景下,我的构建思路是定义一个dada-report子模块用于开发报表设计相关的内容,但在整合的ssm中配置ureport出错,通过链接访问数据的时候无法找到指定的页面。初步考虑路径配置,之后查看web.xml配置,发现在之前的前端控制器配置中,默认拦截了所有的请求,因此在请求的时候直接被dada-report定义的前端控制器拦截,但dada-report这个控制器下并没有指定的ureport相关的内容存在,因此会报404访问路径错误或者是designer报表设计器不存在的问题,此处需要对dada-report拦截的内容做限制,参考前端控制器拦截(拦截说明、拦截顺序、执行顺序)
配置说明
问题说明:如果出现designer视图不存在,考虑是相应的文件没有加载进去,因为在springmvc.xml中加载了有关的ureport2配置文件,因此要在初始化加载spring容器的时候将对应的springmvc.xml配置文件进行加载,否则无法找到相应内容,出现如下所示错误
配置完成,随后可启动项目,访问链接:http://localhost:8080/ureport/designer
ureport业务流程参考官方文档说明
测试的时候如果出现按钮点击无反应,则可能是弹出式窗口被浏览器拦截,只需要允许弹出即可,或可直接通过url直接访问