2019-05-21 SpringBoot集成UReport2

2019-05-21 SpringBoot集成UReport2

1. 引入依赖

<dependency>
    <groupId>com.bstek.ureport</groupId>
    <artifactId>ureport2-console</artifactId>
    <version>2.2.9</version>
</dependency>

2. 配置Servlet

1 @Bean
2 public ServletRegistrationBean<Servlet> ureport2Servlet(){
3   return new ServletRegistrationBean<Servlet>(new UReportServlet(), "/ureport/*");
4 }

注意:”/ureport/*” 是固定的

3. 配置自己的报表存储方式(我的是数据库存储)

 1    /**  2  * 配置报表存储  3  * @return  4 */  5  @Bean  6 public ReportProvider reportProvider() {  7 final String NAME = "数据库存储";  8 final boolean DISABLED = false;  9 final String PREFIX = "DB:"; // 不能为空,否则报表存取不了  10  11 return new ReportProvider() {  12  13  @Override  14 public InputStream loadReport(String file) {  15  16  17 Template one = templateService.getOne(new QueryWrapper<Template>().eq(false, "name", file));//("fName", file));  18  19 if(one!=null) {  20 return new ByteArrayInputStream(one.getTemplate());  21  }  22  23 return null;  24  }  25  26  @Override  27 public void deleteReport(String file) {  28  29 templateService.remove(new QueryWrapper<Template>().eq(false,"name", file));  30  31  }  32  33  @Override  34 public List<ReportFile> getReportFiles() {  35 List<Template> list = templateService.list();  36 List<ReportFile> reportList = new ArrayList<>();  37  38 for (Template template : list) {  39 reportList.add(new ReportFile(getCorrectName(template.getName()), 
                          Date.from(template.getCreateTime().atZone(ZoneId.systemDefault()).toInstant())));
40 } 41 return reportList ; 42 } 43 44 @Override 45 public void saveReport(String file, String content){ 46 47 Template one = templateService.getOne(new QueryWrapper<Template>().eq(false,"name", file)); 48 49 if(one == null){ 50 51 one = new Template(); 52 one.setName(file); 53 54 one.setTemplate(content.getBytes()); 55 56 one.setCreateTime(LocalDateTime.now()); 57 58 User user = (User) SecurityUtils.getSubject().getPrincipal(); 59 one.setCreator(user.getUsername()); 60 one.setCreatorID(user.getUserId()+""); 61 62 templateService.save(one); 63 }else{ 64 one.setTemplate(content.getBytes()); 65 one.setCreateTime(LocalDateTime.now()); 66 templateService.updateById(one); 67 } 68 69 70 } 71 72 /** 73 * 报表存储命名 74 */ 75 @Override 76 public String getName() { 77 78 return NAME; 79 } 80 81 @Override 82 public boolean disabled() { 83 return DISABLED; 84 } 85 86 @Override 87 public String getPrefix() { 88 89 return PREFIX; 90 } 91 92 private String getCorrectName(String name){ 93 if(name.startsWith(PREFIX)){ 94 name = name.substring(PREFIX.length(), name.length()); 95 } 96 return name; 97 } 98 99 100 }; 101 }

注意:① 前缀不能为空;② 获得模板列表时需要把前缀去掉;因为删除和加载模板时会自动加上前缀,假如原本前缀是DB:,那么进行加载和删除时,报表前缀则会变成 DB:DB:

4. 隐藏系统自带的保存配置

从UReport2核心包中取出ureport.properties放到类根路径下,修改配置

1 ## UReport2 配置文件 2 3 ureport.disableHttpSessionReportCache=true 4 5 #UReport2默认报表存储 6 ureport.disableFileProvider=true 7 ureport.fileStoreDir=d:/ureportfiles 8 9 ureport.debug=true

5. 配置内置数据源

 1 /**  2  * 配置数据源  3  * @param dataSource  4  * @return  5 */  6  @Bean  7 public BuildinDatasource buildinSystemDatasource(@Qualifier("systemDataSource")DataSource dataSource) {  8 return new BuildinDatasource() {  9 10  @Override 11 public String name() { 12 return "System"; 13  } 14 15  @Override 16 public Connection getConnection() { 17 try { 18 return dataSource.getConnection(); 19 } catch (SQLException e) { 20 21  e.printStackTrace(); 22  } 23 return null; 24 25  } 26 27  }; 28  } 29 30 /** 31  * 配置数据源 32  * @param dataSource 33  * @return 34 */ 35  @Bean 36 public BuildinDatasource buildinDemo1Datasource(@Qualifier("demo1DataSource")DataSource dataSource) { 37 return new BuildinDatasource() { 38 39  @Override 40 public String name() { 41 return "Demo1"; 42  } 43 44  @Override 45 public Connection getConnection() { 46 try { 47 return dataSource.getConnection(); 48 } catch (SQLException e) { 49 50  e.printStackTrace(); 51  } 52 return null; 53 54  } 55 56  }; 57 }

6. UReport2的使用可以参考

网页文档:https://www.w3cschool.cn/ureport/?

视频教程:http://pan.baidu.com/s/1boWTxF5,密码:98hj

转载于:https://www.cnblogs.com/WongHugh/p/10903195.html

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/100905.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • HDU-1387-Team Queue

    HDU-1387-Team Queue

  • 市场上Web 应用防火墙哪家好?

    市场上Web 应用防火墙哪家好?伴随着移动互联网及互联网的发展,办公自动化也成为大势所趋。当企业通过网络办公获得无限便利后,也要时刻关注潜在的网络安全威胁。为了保护数据安全,更多企业都会配备Web应用防火墙设备。在市场上的Web应用防火墙产品应用中,被Gartner魔力象限评为Web应用防火墙领导者的F5公司的产品受到了广泛的关注与好评。 F5被Gartner魔力象限评为Web应用防火墙领导者F5推出的WEB应用防…

  • JSONPath浅析

    JSONPath浅析 在日常的项目开发中,我们常常会为了避免在代码中hardcoding而对某些参数进行配置化,进而提高开发效率和灵活性。而常用的数据结构就是JSON。而对配置的数据的获取的方式常常有以下几种方式:第一种:JSONPath:@TestpublicvoidtestJsonPath(){JSONObjectdata=JSONObject…

  • IOS成长之路-Nsstring中搜索方法rangeOfString

    IOS成长之路-Nsstring中搜索方法rangeOfString

  • Python Matplotlib 画心形曲线[通俗易懂]

    Python Matplotlib 画心形曲线[通俗易懂]https://blog.csdn.net/sinat_34328764/article/details/80246139

    2022年10月10日
  • manifest文件使用(manifest文件作用)

    解决难以打开MANIFEST文件的问题打开MANIFEST文件的麻烦MicrosoftNotepad已删除你尝试加载MANIFEST文件并收到错误,例如“%%os%%无法打开MANIFEST文件扩展名”。通常情况下,这意味着MicrosoftNotepad没有安装在%%os%%上。由于您的操作系统不知道如何处理此文件,因此无法通过双击将其打开。提示:如果你…

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号