润乾与 springBoot 集成

Spring Boot 是由 Pivotal 团队提供的全新框架,其设计目的是用来简化新 Spring 应用的初始搭建以及开发过程。该框架使用了特定的方式来进行配置,从而使开发人员不再需要定义样板化的配置。下面介绍下一个简单的 springBoot 项目的搭建以及与润乾集成的过程。

基于最新版(1027)集成所需文件及详细文档说明可参见:
链接:https://pan.baidu.com/s/1vS_olMVCZkR9YAuNbGwtLQ 
提取码:1234

PS:如已掌握 springBoot 工程搭建,第一部分可忽略

开发工具:myeclipse 2017

一: maven 构建 springBoot 项目*

1、访问http://start.spring.io/

2、选择构建工具 Maven Project、Spring Boot 版本,Dependencies

选择 web,可参考下图所示:

3、点击 Generate Project 下载项目压缩包

4、解压后,使用 eclipse,Import -> Existing Maven Projects -> Next -> 选择解压后的文件夹 -> Finsh,OK done。

工程会自动根据 pom.xml 中的配置自动加载需要的 jar 文件,jar 加载完成后一个简单的 springBoot 工程搭建完毕。

5、编写 controller 测试:

package com.neo.springBoot;

import java.util.Map;

import org.springframework.stereotype.Controller;

import org.springframework.web.bind.annotation.RequestMapping;

@Controller

public****class HelloController {

@RequestMapping(“/hello”)

public String index() {

return“Hello world!”;

    }

}

6、启动 springBoot,工程搭建后,会自动在 com.neo.springBoot(neo.springBoot 路径为下载工程时设置的包路径)下生成一个 Application.java,运行该类就能启动工程,在该类上右键——Run As——Spring Boot App,即可启动项目。

7、打开浏览器访问:http://localhost:8080/hello,即可在页面中输出“Hello World!”

8、springBoot 默认不支持 jsp 页面展示,而报表需要通过 jsp 的 tag 标签展示,所以要在功能中增加 jsp 展示的配置。

9、打开 pom.xml,在里边增加:

<dependency>

 <groupId>javax.servlet</groupId>

 <artifactId>javax.servlet-api</artifactId>

 </dependency>

 <dependency>

 <groupId>javax.servlet</groupId>

 <artifactId>jstl</artifactId>

 </dependency>

<dependency>

 <groupId>org.apache.tomcat.embed</groupId>

 <artifactId>tomcat-embed-jasper</artifactId>

 </dependency>

 同样,工程会自动加载相关的 jar 包,下载完成后,工程即可支持 jsp 文件。

二: 集成润乾*

1:在 src/main 下新建目录 webapp,并将润乾设计器安装后产生的 demo 应用下的文件复制到 webapp 下。springBoot 不需要 web.xml,所以 web.xml 不需要复制,WEB-INF 下的 lib 目录不需要复制。

2:集成 jar 包,springBoot 是通过 maven 管理 jar 包,在设计器安装目录下的 \report\doc\zh 有个 pom.xml,润乾需要的第三方 jar 包在该文件中配置,将润乾的 pom.xml 中的内容复制到工程中即可。润乾自己的 jar 包需要手动集成到 springBoot 项目中。
集成方法一:

在开发工具中,右键 Referenced Libraries——Build Path——configure Build Path——Add External JARs,在弹出窗口中选择引入的 jar 包,本例只引入几个相关 jar 包,实际使用时引入除 pom.xml 中其他所有 jar 包,


如需其他 jar 包,可参考:
润乾报表需要的 jar 列表:

数据报表展现需要的基础 jar:

dm.jar—授权解析
raqsoftReport.jar—展现处理
jdom.jar—- 解析 xml

根据情况添加以下 jar:

导出 excel:

imagepng

导出 PDF:

imagepng

普通图形计算展现:

imagepng

echarts 图形计算展现:
json.jar
集成方法二:
将润乾核心 jar 放到工程目录下的 src lib 目录下,然后在 pom.xml 中增加 jar 包的引入,如:

 <dependency>
    <groupId>com.raqsoft</groupId>
    <artifactId>raqsoftReport</artifactId>
    <version>1</version>
    <scope>system</scope>
    <systemPath>${project.basedir}/src/lib/raqsoftReport.jar</systemPath>
  </dependency>

3、配置 servlet

润乾报表需要 servlet 加载配置文件,普通 java web 应用中 servlet 是在 web.xml 中配置,但 springBoot 总并不会读取 web.xml,所以所需要的 servlet、listener、filter 都需要单独在 springBoot 中单独配置。
(1)在 resources 目录下新建目录 config,将润乾的配置文件 raqsoftConfig.xml 放到 config 下。

(2)
Spring Boot 提供了 ServletRegistrationBeanFilterRegistrationBeanServletListenerRegistrationBean这 3 个来进行配置 Servlet、Filter、Listener。

在工程中新建 class,源码如下:


package com.neo.springBoot;

import java.util.*; 

import org.springframework.boot.context.embedded.FilterRegistrationBean; 

import org.springframework.boot.context.embedded.ServletListenerRegistrationBean; 

import org.springframework.boot.context.embedded.ServletRegistrationBean; 

import org.springframework.context.annotation.Bean; 

import org.springframework.context.annotation.Configuration; 

import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter;

import com.raqsoft.report.view.ReportServlet;

import com.raqsoft.report.view.ServletMappings; 

@Configuration

public class WebConfig {  

@Bean
//统计报表servlet注册
public ServletRegistrationBean servletRegistrationBean() {  
		ServletRegistrationBean registration = new ServletRegistrationBean(new ReportServlet());
        registration.setLoadOnStartup(1);
        registration.addInitParameter("configFile", "/config/raqsoftConfig.xml");
        registration.addInitParameter("headless", "none"); 
        registration.setName("reportServlet");
        registration.addUrlMappings("/reportServlet"); 
        com.raqsoft.report.view.ServletMappings.mappings.put( "com.raqsoft.report.view.ReportServlet", "/reportServlet");
        System.out.println("润乾servlet注册完成"); 
        return registration; 
    }  
    @Bean
//填报表servlet注册
	public ServletRegistrationBean servletRegistrationBean1() {
		ServletRegistrationBean reg =  new ServletRegistrationBean(new InputServlet());
		reg.setLoadOnStartup(1);
		reg.addInitParameter("configFile", "/WEB-INF/raqsoftConfig.xml");
		
		reg.setName("InputServlet");
		
		reg.addUrlMappings("/InputServlet");
		
		com.raqsoft.input.view.ServletMappings.mappings.put("com.raqsoft.input.view.InputServlet", "/InputServlet");
		
		
		return reg;
	} 

}

这样就可以完成润乾的 reportServlet 的注册,本例只介绍润乾 V2018 集成到 springBoot 中的核心操作,所以只需要这一个 servlet 即可,其他 servlet、Filter、Listener 等按照相应的方法添加即可。
注意:如果应用打 jar 包发布,会报找不到 raqsoftConfig.xml 错误,因为打 jar 包后没有应用相对目录了,可以将 raqsoftConfig.xml 放到类路径下,也就是 resources 目录,然后更改 java 类中代码就行。这个需要替换最新的 raqsoftReport.jar 包

4、制作测试报表放到 src/main/webapp/WEB-INF/reportFiles 目录下。

5、重启工程,在浏览器中访问:http://localhost:8080/reportJsp/showReport.jsp?rpx=test.rpx,即可展现报表,如图:

至此,润乾 V2018 集成到 springBoot 成功。
注意:高版本的 springboot 会默认带 springboot mvc 框架,所以直接访问 jsp 可能会报页面访问错误,所以需要按照 spring mvc 机构处理方式进行处理。

** 总结:** 润乾部署在 springBoot 上和和他常见部署最大的不同就是 servlet 的加载,在 springBoot 中要通过程序加载相应的 servlet,加载方式也有多种,到时候根据实际情况进行设置即可。

更多集成部署类问题请看:集成部署分类导航
* jboss7.1.1 下部署润乾报表 2018 详细步骤
* 如何把润乾报表嵌入 web 应用中
* Mac 环境中部署报表
* tomcat8 部署润乾 v2018 完整过程
* linux 操作系统安装润乾报表