更新记录

更新记录

2021-09-27

​ Ureport报表设计器基础

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直接访问