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服务器成功:
05-08 08:43