FineReport帆軟報表和J2EE java web 應(yīng)用的集成

FineReport是一個純Java軟件,因此對于J2EE的項目,可以做到無縫集成。

報表服務(wù)器并非物理概念的服務(wù)器,而是以一個標準的J2EE應(yīng)用的形式或者jar包的形式提交給程序。應(yīng)用程序通過url來調(diào)用報表,或者通過開放的API來調(diào)用報表的各種功能,來實現(xiàn)更加靈活的控制。報表集成到應(yīng)用程序后,即可作為一個統(tǒng)一完整的程序來進行發(fā)布。

同時無縫集成還能夠使報表與應(yīng)用程序使用同一個數(shù)據(jù)庫連接池,或進行集群,負載均衡等,提高報表的運行效率,原理圖如圖1所示:

圖1 Java項目集成原理圖


報表工程目錄結(jié)構(gòu)

?????? 在說明配置FineReport服務(wù)器之前,我們先了解一下FineReport應(yīng)用服務(wù)的目錄結(jié)構(gòu):

對上圖的目錄層次結(jié)構(gòu)我們做一些說明:

WebReport:可以看到所有的相關(guān)文件都包含在WebReport這個服務(wù)器應(yīng)用工程中,也就是說WebReport是我們默認的工程名,此項名字可以修改。

WEB-INF:WEB-INF目錄是J2EE服務(wù)器中默認規(guī)定的,全稱是Web Information。

classes:classes 文件夾也是應(yīng)用服務(wù)器默認規(guī)定的。主要作用是存放.class文件,例如在FineReport中,如果要使用"自定義函數(shù)","程序數(shù)據(jù)源"和"程序網(wǎng) 絡(luò)報表"等功能,必需先使用我們提供的接口來編寫.java文件,然后將編譯后產(chǎn)生的.class文件存放到該目錄下。

lib:lib 也是應(yīng)用服務(wù)器規(guī)定的目錄結(jié)構(gòu)。FineReport該目錄下主要包括fr-server-6.5.jar,第三方類的jar文件和一些常用數(shù)據(jù)庫 JDBC驅(qū)動,比如ojdbc14.jar就是Oracle數(shù)據(jù)庫的驅(qū)動,應(yīng)用服務(wù)器在啟動的時候會自動將lib目錄下所有的.jar文件加載到系統(tǒng)的 classpath中;fr-server-6.5.jar包含了FineReport服務(wù)器的所有功能,它是由FineReport源文件編譯后產(chǎn)生 的.class類文件。例如:Servlet類com.fr.web.ReportServlet便位于fr-server-6.5.jar中。

reportlets:reportlets是FineReport服務(wù)器默認規(guī)定的,不能修改??梢栽谶@個目錄下面建立子目錄文件夾,F(xiàn)ineReport設(shè)計器設(shè)計的模板一般都保存在這個目錄或者它的子目錄下面,以便FineReport服務(wù)器調(diào)用。

resources:resources 是FineReport服務(wù)器默認規(guī)定的,不能修改。下面保存了一些.xml文件,這些.xml文件里面保存著FineReport服務(wù)器的配置等信息,F(xiàn)ineReport服務(wù)器啟動的時候,會自動加載這些.xml文件(有些xml文件不是運行必需的)。

web.xml:這個文件也是J2EE服務(wù)器所規(guī)定必須建立的,我們在此文件中定義了FineReport的SERVLET的解析路徑方式,權(quán)限加載等一些內(nèi)容,此文件初始配置內(nèi)容如下:

1.?????

2.????

3.???

4.?ReportServer??

5.?com.fr.web.ReportServlet??

6.?0??

7.????

8.???

9.?ReportServer???

10./ReportServer??

11.??

12.??

報表集成步驟

1、? 服務(wù)器部署

FineReport報表是一個Servlet應(yīng)用。大 家知道,Servlet是一種服務(wù)器端的Java應(yīng)用程序,具有獨立于平臺和協(xié)議的特性,可以生成動態(tài)的Web頁面。 它擔當客戶請求(Web瀏覽器或其他HTTP客戶程序)與服務(wù)器響應(yīng)(HTTP服務(wù)器上的數(shù)據(jù)庫或應(yīng)用程序)的中間層。 Servlet是位于Web 服務(wù)器內(nèi)部的服務(wù)器端的Java應(yīng)用程序,由Web服務(wù)器進行加載,該Web服務(wù)器必須包含支持Servlet的Java虛擬機。

因此FineReport報表必須部署在Web應(yīng)用服務(wù)器如Tomcat、Weblogic、Websphere等下面,啟動Web應(yīng)用服務(wù)器時就會加載FineReport報表這個Servlet,從而交互式地瀏覽和修改數(shù)據(jù),整個過程如下:

報表部署分為兩種,一是報表作為一個獨立的應(yīng)用獨立部署;或者是集成到現(xiàn)有應(yīng)用即嵌入式部署。不管哪種部署方式,他們的目錄結(jié)構(gòu)都是類似的。

如下圖我們對未包含報表的應(yīng)用及包含報表的應(yīng)用目錄作一個比較:

?????? 1.1獨立部署

FineReport安裝目錄下的WebReport目錄就是一個標準的應(yīng)用,因此,若用戶希望將報表作為一個獨立的應(yīng)用進行部署的話,可以直接使用WebReport目錄進行發(fā)布。


?????? 1.2嵌入式部署

若用戶希望將報表集成到自己的應(yīng)用中的話,則可以對應(yīng)上圖“部署報表后的應(yīng)用”目錄結(jié)構(gòu),將對應(yīng)的報表文件拷貝到相應(yīng)目錄即可。


2、? 頁面集成

用戶系統(tǒng)的網(wǎng)頁可能由不同的語言開發(fā),如HTML、ASP、JSP、PHP等。FineRepor報表可以通過Frame框架集成到Web頁面中,指定Frame的src即可。

例:??

另外頁面集成中的一些常見應(yīng)用:動態(tài)傳參、自定義參數(shù)界面、自定義工具欄、頁面布局等;可以參考FR在線幫助手冊。

3、? 權(quán)限集成

3.1、FR權(quán)限流程圖


3.2、豐富的權(quán)限認證方式

FineReport為了保證權(quán)限功能的通用性,提供了多種認證方式,其總體架構(gòu)圖如圖

圖2 FineReport權(quán)限總體架構(gòu)圖


3.3、權(quán)限粒度

??????? 很多系統(tǒng)的權(quán)限認證只是限制模塊的使用,使得合法用戶能夠行使自己的權(quán)利。FineReport在滿足這種整體權(quán)限認證的同時,權(quán)限的控制力度可以達到同一張報表的內(nèi)容在不同權(quán)限下展示的效果不一樣,這樣就免除了制作大量的報表來實現(xiàn)同樣效果,尤其是在企業(yè)內(nèi)部業(yè)務(wù)繁雜,審批麻煩時,一張報表就可以解決所有問題。


3.4、靈活的權(quán)限集成

伴隨著國內(nèi)信息技術(shù)的高速發(fā)展,越來越多的政府和企事業(yè)單位使用信息管理系統(tǒng)來管理日常的工作生產(chǎn),但是每個系統(tǒng)應(yīng)用都有自己的權(quán)限體系模型,經(jīng)常會出現(xiàn)一個用戶在好幾個系統(tǒng)應(yīng)用里面都有設(shè)置,這樣就產(chǎn)生了兩個問題:1:用戶每訪問一個系統(tǒng),都要登錄一次,既繁瑣又要用戶記憶很多的用戶名和密碼;2:加大了對日常的組織分配和人員變更的維護的復雜性和高成本性。

FineReport提供的權(quán)限認證,可以靈活的與其它系統(tǒng)進行統(tǒng)一認證,實現(xiàn)單點登錄。

當我們按照上面的三種類型的身份驗證方式配置好相應(yīng)權(quán)限后,需要將報表和相應(yīng)的系統(tǒng)進行集成,我們采取的方式是:

1:當客戶登錄時通過FR登錄接口傳遞相應(yīng)的用戶名和密碼給我們報表系統(tǒng);

2:報表系統(tǒng)會匹配報表用戶數(shù)據(jù)集中的用戶名和傳遞過來的用戶名,然后識別登錄用戶的角色,并根據(jù)角色綁定相應(yīng)的權(quán)限;

3:把角色存儲在session里面,這樣用戶訪問每張報表時,報表權(quán)限都會先和session進行驗證,滿足的話就直接進行相應(yīng)權(quán)限的操作,不滿足的話則會提示沒有權(quán)限。

具體的實現(xiàn)過程如圖3所示:

java架構(gòu)、java高級開發(fā)、nginx、dubbo、java分布式架構(gòu)、redis、jvm、多線程、java網(wǎng)絡(luò)編程、netty、kafka、spring,Mybatis,高可用,高性能 需要學習資料和路線可以加Java高級交流群:( 725633148 ) 每晚8點高清在線直播與你分享java企業(yè)當下招聘人才需求,怎么學Java,和學習什么內(nèi)容,相信你了解之后對你今后學習Java會有非常大的幫助
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn),斷路器,智...
    卡卡羅2017閱讀 136,534評論 19 139
  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 178,901評論 25 709
  • 本章將結(jié)合先前所學的爬蟲和正則表達式知識,做一個簡單的爬蟲案例,更多內(nèi)容請參考:Python學習指南 現(xiàn)在擁有了正...
    小七奇奇閱讀 604評論 0 0
  • 情商高的人懂得為人處事,懂得珍惜身邊的一切,懂得為他人著想,情商雖不是立足的根本,但它卻能使工作更容易完成...
    彭紅霞_a827閱讀 185評論 0 0
  • “啊……啊咧?” 洛子佑一臉驚訝地看向周圍,現(xiàn)在的他仿佛正走在古代歐洲的街巷中,這樣的城市類似于他在課本上的繪畫上...
    申煜鑫閱讀 267評論 0 0

友情鏈接更多精彩內(nèi)容