From: http://www.blogjava.net/fannie/archive/2013/05/08/398985.html

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.<?xml version="1.0" encoding="UTF-8"?>

2.<web-app xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"    xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"    version="2.4">

3.<servlet>

4.<servlet-name>ReportServer</servlet-name>

5.<servlet-class>com.fr.web.ReportServlet</servlet-class>

6.<load-on-startup>0</load-on-startup>

7.</servlet>

8.<servlet-mapping>

9.<servlet-name>ReportServer</servlet-name>

10.<url-pattern>/ReportServer</url-pattern>

11.</servlet-mapping>

12.</web-app>

报表集成步骤

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即可。

例:<iframe id="reportFrame" width="900" height="400" src="/WebReport/ReportServer?reportlet=/doc/Primary/Parameter/Parameter.cpt"></iframe>

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

3、 权限集成

3.1FR权限流程图

3.2、丰富的权限认证方式

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

图2 FineReport权限总体架构图

3.3、权限粒度

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

3.4、灵活的权限集成

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

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

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

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

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

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

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

3权限集成示意图

注:FR报表登录接口:http://../ReportServer?op=auth_login

FR报表登出接口:http://../ReportServer?op=auth_logout

总结

FineReport同样作为J2EE的一个应用,可以跟任何J2EE架构的工程进行完美的无缝集成。

如有任何疑惑,FR竭诚为您服务。

FineReport报表和J2EE应用的集成相关推荐

  1. 帆软报表嵌入python程序_FineReport 报表工具的使用与集成

    一直以来,报表功能的开发都是应用系统开发的重点难点.近年来,一些基于Excel 的报表工具的涌现使得报表开发变得越来越简便,极大地减轻了系统开发人员的负担.本文将介绍一款优秀的报表工具---java报 ...

  2. FineReport报表工具最新版本细则

    FineReport简介 FineReport是一款集数据展示(报表),数据查询(参数)和数据录入(填报)功能于一身,用来辅助开发基于BS软件系统的工具软件. 有了FineReport的帮助,在软件开 ...

  3. java 报表_市占率第一的Java报表工具 - FineReport报表工具

    作为国产Java报表工具的优秀代表,FineReport报表工具不仅仅在报表设计的简单易用上表现出极大的优势,更在数据分析等复杂报表处理能力和报表管理等报表综合应用上凸显出其报表技术的成熟和领先. 一 ...

  4. 帆软报表更新到服务器控件展示不出来_报表插件 - FineReport报表官网

    阅读提示: 文章中与FineReport软件使用的相关内容,基于软件的V7.0旧版本编写,不代表软件最新的使用方式. FineReport最新版免费试用:https://www.finereport. ...

  5. 用FineReport报表系统构建资金监管平台

    一.应用背景 计算机的应用已经渗透到日常工作的许多方面,无论是其自身还是所发挥的作用,计算机都标志着一种高科技,使工作高效率和高水平.为了能更方便,更轻松,更好的管理,信息化建设正在日益发展壮大,更加 ...

  6. FineReport 报表数据根据下拉框的值进行数据联动

    FineReport 报表数据根据下拉框的值进行数据联动,不用点击查询按钮 1.新建数据库查询,获得数据. SELECT * FROM [销量] where 地区 ='${area}' 2.把需要展示 ...

  7. python 决策报表_用FineReport报表系统建设企业决策平台

    阅读提示: 文章中与FineReport软件使用的相关内容,基于软件的V7.0旧版本编写,不代表软件最新的使用方式. FineReport最新版免费试用:https://www.finereport. ...

  8. FINEREPORT报表软件 日期时间段查询问题

    这个文章改了三四次 没有一次 是对的 就对自己一个总结 数据库的where 条件 是一条一条对应的 比如 where  id='cd12' 上来是所有的条数都去跟cd12 比较 所以当你写case w ...

  9. 帆软(FineReport)报表学习——插入图表

    接着帆软(FineReport)报表学习--一个简单的报表,新做一个带有图表的决策报表. 一.定义数据查询 首先定义数据查询totaldata,用条形图显示卖场数据: select dept,sum( ...

最新文章

  1. 监控利器Prometheus初探
  2. python3.7.2使用-centos7系统下python2与python3共存
  3. 七牛云上传的图片进行删除
  4. 微信公众平台开发教程(八)Session处理
  5. MySQL 笔记8 -- 存储过程和索引
  6. 如何测试程序是否_软件开发过程中,如何进行自动化测试?Unit Test 和 UI Test
  7. hadoop伪分布式模式_Hadoop模式介绍-独立,伪分布式,分布式
  8. 4.与JSP的第一次握手
  9. ssms .net3.5_SSMS 18.4中SQL Server查询存储选项
  10. LeetCode 242 Valid Anagram
  11. Android高级模糊技术[转]
  12. linux下img文件 windows查看器,Windows server 2016 设置使用照片查看器查看图片
  13. 这样的国企,不去也罢
  14. GSM Hacking:如何对GSM/GPRS网络测试进行测试
  15. k8s-污点和容忍度
  16. java scanner 读取文件_Java读取文本文件
  17. 城域网IPv6过渡技术——MAP技术
  18. 分布式存储系统 之 数据备份
  19. Android ListView滑动删除及响应事件详解
  20. 编码通信与魔术初步(七)——二进制编码经典魔术《街头猜数字》

热门文章

  1. C# 设置当前程序调用的dll文件以及其他文件的寻址路径
  2. 单据打印_Excel多功能进销存套表,自动库存单据,查询打印一键操作
  3. 使用final类的作用是什么?
  4. freecodecamp_1000天的freeCodeCamp
  5. 速度与激情的Webpack
  6. 关于长寿_FreeCodeCamp可以帮助您更长寿
  7. 双城记s001_双城记! (使用数据讲故事)
  8. 解决朋友圈压缩_朋友中最有趣的朋友[已解决]
  9. django基于存储在前端的token用户认证
  10. 02----mockjs基本使用