FineReport 报表与Tomcat 服务器的集成

时间:2021-05-08 16:53:24

由于FineReport 提供的报表服务器其实就是一个Servlet,所以通过简单的配置,就可以将FineReport 设计的报表集成到Tomcat 服务器中。

假设已存在一个名为Test 的工程和一个设计好的报表report1.cpt,下面介绍如何将report1.cpt 这个报表集成到Test 工程中。

(一)复制文件

将%FineReport_HOME%\WebReport\WEB-INF 路径下面的classes,lib,reportlets,resources 四个文件复制到%Tomcat_HOME %\webapps\Test\WEB-INF 下。如果Test 工程中已存在class,lib 文件夹,则将%FineReport_HOME%\WebReport\WEB-INF路径下面的classes,lib 文件夹的文件拷贝到%Tomcat_HOME%\webapps\Test\WEB-INF 下的class,lib文件夹中。

(二)整合web.xml 文件

1. 找到在% Tomcat_HOME% \webapps\Test\WEB -INF目录下的web.xml 。

2. 在%FineReport_HOME%/WebReport/WEB -INF下的web.xml 中找到的信息。

 <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>

3. 将%FineReport_HOME%/WebReport/WEB -INF下的web.xml 中找到的内容复制到%Tomcat 5.5%\webapps\Test\WEB-INF目录下的web.xml 中,放在<servlet-mapping>标志之前,</servlet> 标志之后。

(三)浏览报表

重新启动Tomcat,启动浏览器,在地址栏输入http://localhost:8080/Test/ReportServer reportlet=/com/test/report1.cpt。


(四)通过jsp访问:

<%@ page language="java" contentType="text/html; charset=UTF-8"
	pageEncoding="UTF-8" session="false" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<!-- 
  - Author(s): 
-->
<head>
<%@include file="/common/common.jsp"%>
<title>billReport</title>
    <meta http-equiv="content-type" content="text/html; charset=UTF-8" />
    <script src="<%= request.getContextPath() %>/common/nui/nui.js" type="text/javascript"></script>
    
</head>
<body>
	
	<div class="nui-panel"  iconCls="fa fa-search" style="width:100%;height:70px;" showToolbar="false" showFooter="true">
        <div id="form_rcvbl" class="nui-form" align="center" style="height:100%;">    
            <table class="table" style="height:100%">
                <tr>
	                <td class="form_label">
	                        <b:message key="hx.billing.crm.column.account_no"/> <b:message key="hx.billing.common.symbol.colon"/>
	                    </td>
	                   <td colspan="1">
	                        <input id="textbox_consNo" class="nui-textbox"/>
	                </td>
                    <td colspan="1">
                        <a id="button_search" class="nui-button" onclick="queryReport()" style="margin-left: 50px;">
				            <b:message key="hx.billing.common.button.query"/>
				        </a>
                    </td>
                </tr>
            </table>
        </div>
    </div>
    <div>
		<iframe id="reportFrame"  frameborder="0"></iframe> 
	</div> 
	<script type="text/javascript">
    	nui.parse();
        <%-- 查询报表  --%>
    	function queryReport(){
    		var consNo = nui.get("textbox_consNo").value;
    		var reportURL = "<%= request.getContextPath() %>/ReportServer?reportlet=queryCons.cpt&consNo="+consNo;  
    		var ifm = document.getElementById("reportFrame");
    		ifm.height=document.documentElement.clientHeight-70;
    		ifm.width=document.documentElement.clientWidth;
    		ifm.src = reportURL; 
    	}
    	window.onload = queryReport;
    </script>
</body>
</html>