Java軟件報(bào)表軟件技術(shù)博客

          java報(bào)表軟件技術(shù)匯總 java報(bào)表軟件制作 報(bào)表軟件新聞
          posts - 355, comments - 100, trackbacks - 0, articles - 3
             :: 首頁 :: 新隨筆 ::  :: 聚合  :: 管理

          FineReport是一個(gè)純Java軟件,因此對(duì)于J2EE的項(xiàng)目,可以做到無縫集成。

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

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


          1 Java項(xiàng)目集成原理圖

           

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

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


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

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

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

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

          lib:lib 也是應(yīng)用服務(wù)器規(guī)定的目錄結(jié)構(gòu)。FineReport該目錄下主要包括fr-server-6.5.jar,第三方類的jar文件和一些常用數(shù)據(jù)庫 JDBC驅(qū)動(dòng),比如ojdbc14.jar就是Oracle數(shù)據(jù)庫的驅(qū)動(dòng),應(yīng)用服務(wù)器在啟動(dòng)的時(shí)候會(huì)自動(dòng)將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ù)器默認(rèn)規(guī)定的,不能修改。可以在這個(gè)目錄下面建立子目錄文件夾,F(xiàn)ineReport設(shè)計(jì)器設(shè)計(jì)的模板一般都保存在這個(gè)目錄或者它的子目錄下面,以便FineReport服務(wù)器調(diào)用。

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

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

          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>  

          報(bào)表集成步驟

          1、 服務(wù)器部署

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

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


           

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

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


                 1.1獨(dú)立部署

          FineReport安裝目錄下的WebReport目錄就是一個(gè)標(biāo)準(zhǔn)的應(yīng)用,因此,若用戶希望將報(bào)表作為一個(gè)獨(dú)立的應(yīng)用進(jìn)行部署的話,可以直接使用WebReport目錄進(jìn)行發(fā)布。

           

                 1.2嵌入式部署

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

           

          2、 頁面集成

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

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

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

          3、 權(quán)限集成

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


           

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

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

             

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

           

          3.3、權(quán)限粒度

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

           

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

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

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

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

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

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

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

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


          3 權(quán)限集成示意圖

                        注:FR報(bào)表登錄接口:http://../ReportServer?op=auth_login

                               FR報(bào)表登出接口:http://../ReportServer?op=auth_logout

           

          總結(jié)

                 FineReport同樣作為J2EE的一個(gè)應(yīng)用,可以跟任何J2EE架構(gòu)的工程進(jìn)行完美的無縫集成。

                 如有任何疑惑,FR竭誠(chéng)為您服務(wù)。

           




          評(píng)論

          # re: FineReport報(bào)表和J2EE應(yīng)用的集成  回復(fù)  更多評(píng)論   

          2015-11-23 14:21 by 43
          344444444444444444
          主站蜘蛛池模板: 丰顺县| 嘉义县| 安塞县| 盐边县| 德保县| 武川县| 西充县| 天祝| 临高县| 永胜县| 北川| 延庆县| 友谊县| 南皮县| 青海省| 辽阳市| 石景山区| 龙游县| 时尚| 隆昌县| 宿松县| 车致| 湘阴县| 黑河市| 綦江县| 邳州市| 个旧市| 南宫市| 新安县| 工布江达县| 旺苍县| 克拉玛依市| 周宁县| 景泰县| 弋阳县| 广安市| 正安县| 江安县| 新津县| 那坡县| 沅陵县|