FineReport報表是帆軟公司推出的可以嵌入java的免費報表。 FineReport有2部分組成,一有c/s端的報表工具制作cpt結尾的報表文件;二是 java調用報表的web程序。 這里主要說web程序的使用。 Struts2與Servlet共存問題: 理論上二者是無法共存的,因為Struts2的攔截器StrutsPrepareAndExecuteFilter如果配置為 <filter-mapping> <filter-name>struts2</filter-name> <url-pattern>/*</url-pattern> </filter-mapping> 在訪問Servlet時會攔截到,誤認為Servlet是一個Action。 處理方法: 1、配置Struts的<filter-mapping>訪問路徑,這Servlet還正常配置。 <filter-mapping> <filter-name>struts2</filter-name> <url-pattern>*.action</url-pattern> </filter-mapping> <filter-mapping> <filter-name>struts2</filter-name> <url-pattern>*.jsp</url-pattern> </filter-mapping> <filter-mapping> <filter-name>struts2</filter-name> <url-pattern>/user/*</url-pattern> </filter-mapping> 2、在Struts2的配置文件中添加如下代碼。 <constant name="struts.action.extension" value="action"></constant> 1、直接部署到web service中,通過鏈接調用報表。 安裝完FineReport報表后,在安裝路徑文件夾下有WebReport文件夾,這個文件夾就是FineReport的java調用程序。 制作好的報表文件存放在WebReport\WEB-INF\reportlets路徑下。 通過web.xml文件配置的Servlet調用報表。 <servlet> <servlet-name>ReportServer</servlet-name> <servlet-class>com.fr.web.ReportServlet</servlet-class> <load-on-startup>0</load-on-startup> </servlet> <servlet-mapping> <servlet-name>ReportServer</servlet-name> <url-pattern>/ReportServer</url-pattern> </servlet-mapping> 訪問路徑:http://localhost:8075/WebReport/ReportServer?reportlet=WorkBook13.cpt 2、嵌入到程序中 1. 描述 由報表應用目錄結構章節可知,若希望將報表部署到已有的工程中時,需要按照下圖所示的目錄結構,將報表相關的文件拷貝到相應目錄: 2. 復制目錄編輯 2.1 全部復制 為了簡便,可以直接將%FineReport_HOME%\WebReport\WEB-INF目錄下面的classes,lib,plugins,reportlets,resources五個目錄復制到%Tomcat_HOME% \webapps\jsp-examples\WEB-INF下。 注意:%FineReport_HOME%\WebReport\WEB-INF\classes文件夾下面可能會放置一些網絡報表的class文件,在和您的工程集成時並無沖突。有關網絡報表的介紹,可以在二次開發文檔中找到。 2.2 部分復制 也可以選擇性的只復制必要性文件至已有工程中。 1)必須復制的文件 fr-chart-8.0.jar、fr-core-8.0.jar、fr-performance-8.0.jar、fr-platform-8.0.jar、fr-report-8.0.jar:包含了報表服務的所有功能,必須拷貝至WEB-INF\lib下; fr-third-8.0.jar:包含了報表服務引用的第三方插件,必須拷貝至WEB-INF\lib下; plugin-com.fr.plugin.mdnl-0.jar、plugin-com.fr.plugin.mdnl-1.jar、plugin-com.fr.plugin.mdnl-2.jar、plugin-com.fr.plugin.oldui-1.jar、plugin-com.fr.plugin.sap-0.jar、plugin-com.fr.plugin.sap-3.jar等plugin開頭的jar:包含了報表插件管理里安裝的所有插件,必須拷貝至WEB-INF\lib下; plugins:該文件夾包含了報表管理里安裝的所有插件的jar包和配置信息,拷貝至WEB-INF下面。 reportlets:該文件夾為FineReport服務器規定的,不能修改,且必須為小寫,其下可以建立子目錄,所有報表模板cpt文件必須保存在reportlets文件夾下,且reportlets文件必須放在WEB-INF下面; resources:該文件夾也是FineReport服務器規定的,不能修改,且必須為小寫,下面包含了報表服務器的配置信息,拷貝至WEB-INF下面。 以上文件或文件夾是必須拷貝到已有應用目錄下的。 2)選擇性復制的文件 classes:該文件夾是應用服務器規定的,主要作用是存放.class文件。若對FineReport進行了二次開發,如自定義函數、程序數據源、程序網絡報表等,也需要將編譯后的class類文件拷貝到該文件夾下; 數據庫驅動包:若報表中使用了JDBC連接了數據庫,需要將對應的數據庫驅動包如Oracle數據庫的驅動ojdbc14.jar拷貝到WEB-INF\lib下,其他數據庫驅動同樣; 3. 修改web.xml文件編輯 在已有工程的web.xml中添加相應的servlet與servlet-mapping子元素。 將%FineReport_HOME%/WebReport/WEB-INF下的web.xml中如下的部分復制到%Web_home%/webapps/Web工程名/WEB-INF下的web.xml中,在最后一個servlet之后插入: 1. <servlet> 2. <servlet-name>ReportServer</servlet-name> 3. <servlet-class>com.fr.web.ReportServlet</servlet-class> 4. <load-on-startup>0</load-on-startup> 5. </servlet> 6. <servlet-mapping> 7. <servlet-name>ReportServer</servlet-name> 8. <url-pattern>/ReportServer</url-pattern> 9. </servlet-mapping> 如上代碼復制放到如下目錄下面的配置文件里面結果如下: 注:web.xml中對於元素出現的順序敏感。servlet必須出現在servlet-mapping標志之前。所有將所有servlet集合放置在servlet-mapping之前以便於管理與程序調用。 4. 檢測是否部署成功編輯 可以通過瀏覽報表確定是否部署成功。 重新啟動Tomcat, 啟動瀏覽器,在地址欄輸入 http:/ip:服務器端口號/項目所在目錄/ReportServer,能成功進入下圖所示頁面,則表明FineReport應用集成web應用並部署Tomcat服務器成功: