FineReport帆软报表和J2EE java web 应用的集成

FineReport是一个纯Java软件,因此对于J2EE的项目,可以做到无缝集成。

报表服务器并非物理概念的服务器,而是以一个标准的J2EE应用的形式或者jar包的形式提交给程序。应用程序通过url来调用报表,或者通过开放的API来调用报表的各种功能,来实现更加灵活的控制。报表集成到应用程序后,即可作为一个统一完整的程序来进行发布。

同时无缝集成还能够使报表与应用程序使用同一个数据库连接池,或进行集群,负载均衡等,提高报表的运行效率,原理图如图1所示:

图1 Java项目集成原理图


报表工程目录结构

       在说明配置FineReport服务器之前,我们先了解一下FineReport应用服务的目录结构:

对上图的目录层次结构我们做一些说明:

WebReport:可以看到所有的相关文件都包含在WebReport这个服务器应用工程中,也就是说WebReport是我们默认的工程名,此项名字可以修改。

WEB-INF:WEB-INF目录是J2EE服务器中默认规定的,全称是Web Information。

classes:classes 文件夹也是应用服务器默认规定的。主要作用是存放.class文件,例如在FineReport中,如果要使用"自定义函数","程序数据源"和"程序网 络报表"等功能,必需先使用我们提供的接口来编写.java文件,然后将编译后产生的.class文件存放到该目录下。

lib:lib 也是应用服务器规定的目录结构。FineReport该目录下主要包括fr-server-6.5.jar,第三方类的jar文件和一些常用数据库 JDBC驱动,比如ojdbc14.jar就是Oracle数据库的驱动,应用服务器在启动的时候会自动将lib目录下所有的.jar文件加载到系统的 classpath中;fr-server-6.5.jar包含了FineReport服务器的所有功能,它是由FineReport源文件编译后产生 的.class类文件。例如:Servlet类com.fr.web.ReportServlet便位于fr-server-6.5.jar中。

reportlets:reportlets是FineReport服务器默认规定的,不能修改。可以在这个目录下面建立子目录文件夹,FineReport设计器设计的模板一般都保存在这个目录或者它的子目录下面,以便FineReport服务器调用。

resources:resources 是FineReport服务器默认规定的,不能修改。下面保存了一些.xml文件,这些.xml文件里面保存着FineReport服务器的配置等信息,FineReport服务器启动的时候,会自动加载这些.xml文件(有些xml文件不是运行必需的)。

web.xml:这个文件也是J2EE服务器所规定必须建立的,我们在此文件中定义了FineReport的SERVLET的解析路径方式,权限加载等一些内容,此文件初始配置内容如下:

1.     

2.    

3.   

4. ReportServer  

5. com.fr.web.ReportServlet  

6. 0  

7.    

8.   

9. ReportServer   

10./ReportServer  

11.  

12.  

报表集成步骤

1、  服务器部署

FineReport报表是一个Servlet应用。大 家知道,Servlet是一种服务器端的Java应用程序,具有独立于平台和协议的特性,可以生成动态的Web页面。 它担当客户请求(Web浏览器或其他HTTP客户程序)与服务器响应(HTTP服务器上的数据库或应用程序)的中间层。 Servlet是位于Web 服务器内部的服务器端的Java应用程序,由Web服务器进行加载,该Web服务器必须包含支持Servlet的Java虚拟机。

因此FineReport报表必须部署在Web应用服务器如Tomcat、Weblogic、Websphere等下面,启动Web应用服务器时就会加载FineReport报表这个Servlet,从而交互式地浏览和修改数据,整个过程如下:

报表部署分为两种,一是报表作为一个独立的应用独立部署;或者是集成到现有应用即嵌入式部署。不管哪种部署方式,他们的目录结构都是类似的。

如下图我们对未包含报表的应用及包含报表的应用目录作一个比较:

       1.1独立部署

FineReport安装目录下的WebReport目录就是一个标准的应用,因此,若用户希望将报表作为一个独立的应用进行部署的话,可以直接使用WebReport目录进行发布。


       1.2嵌入式部署

若用户希望将报表集成到自己的应用中的话,则可以对应上图“部署报表后的应用”目录结构,将对应的报表文件拷贝到相应目录即可。


2、  页面集成

用户系统的网页可能由不同的语言开发,如HTML、ASP、JSP、PHP等。FineRepor报表可以通过Frame框架集成到Web页面中,指定Frame的src即可。

例:  

另外页面集成中的一些常见应用:动态传参、自定义参数界面、自定义工具栏、页面布局等;可以参考FR在线帮助手册。

3、  权限集成

3.1、FR权限流程图


3.2、丰富的权限认证方式

FineReport为了保证权限功能的通用性,提供了多种认证方式,其总体架构图如图

图2 FineReport权限总体架构图


3.3、权限粒度

        很多系统的权限认证只是限制模块的使用,使得合法用户能够行使自己的权利。FineReport在满足这种整体权限认证的同时,权限的控制力度可以达到同一张报表的内容在不同权限下展示的效果不一样,这样就免除了制作大量的报表来实现同样效果,尤其是在企业内部业务繁杂,审批麻烦时,一张报表就可以解决所有问题。


3.4、灵活的权限集成

伴随着国内信息技术的高速发展,越来越多的政府和企事业单位使用信息管理系统来管理日常的工作生产,但是每个系统应用都有自己的权限体系模型,经常会出现一个用户在好几个系统应用里面都有设置,这样就产生了两个问题:1:用户每访问一个系统,都要登录一次,既繁琐又要用户记忆很多的用户名和密码;2:加大了对日常的组织分配和人员变更的维护的复杂性和高成本性。

FineReport提供的权限认证,可以灵活的与其它系统进行统一认证,实现单点登录。

当我们按照上面的三种类型的身份验证方式配置好相应权限后,需要将报表和相应的系统进行集成,我们采取的方式是:

1:当客户登录时通过FR登录接口传递相应的用户名和密码给我们报表系统;

2:报表系统会匹配报表用户数据集中的用户名和传递过来的用户名,然后识别登录用户的角色,并根据角色绑定相应的权限;

3:把角色存储在session里面,这样用户访问每张报表时,报表权限都会先和session进行验证,满足的话就直接进行相应权限的操作,不满足的话则会提示没有权限。

具体的实现过程如图3所示:

java架构、java高级开发、nginx、dubbo、java分布式架构、redis、jvm、多线程、java网络编程、netty、kafka、spring,Mybatis,高可用,高性能 需要学习资料和路线可以加Java高级交流群:( 725633148 ) 每晚8点高清在线直播与你分享java企业当下招聘人才需求,怎么学Java,和学习什么内容,相信你了解之后对你今后学习Java会有非常大的帮助
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 158,847评论 4 362
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 67,208评论 1 292
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 108,587评论 0 243
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 43,942评论 0 205
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,332评论 3 287
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,587评论 1 218
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,853评论 2 312
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,568评论 0 198
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,273评论 1 242
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,542评论 2 246
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,033评论 1 260
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,373评论 2 253
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 33,031评论 3 236
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,073评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,830评论 0 195
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,628评论 2 274
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,537评论 2 269

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,100评论 18 139
  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 170,568评论 25 707
  • 本章将结合先前所学的爬虫和正则表达式知识,做一个简单的爬虫案例,更多内容请参考:Python学习指南 现在拥有了正...
    小七奇奇阅读 536评论 0 0
  • 情商高的人懂得为人处事,懂得珍惜身边的一切,懂得为他人着想,情商虽不是立足的根本,但它却能使工作更容易完成...
    彭红霞_a827阅读 159评论 0 0
  • “啊……啊咧?” 洛子佑一脸惊讶地看向周围,现在的他仿佛正走在古代欧洲的街巷中,这样的城市类似于他在课本上的绘画上...
    申煜鑫阅读 211评论 0 0