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。 處理方法: 一、配置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> 二、在Struts2的配置文件中添加以下代碼。 <constant name="struts.action.extension" value="action"></constant> 一、直接部署到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 二、嵌入到程序中 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服務器成功: