具体的实现步骤如下:第一步:设计报表这里使用mysql数据库为例做报表,数据源名称为”mysqlCon”, 第二步:读取Spring配置文件内的数据源工具类及工具类配置1、 编写读取Spring配置文件内的数据源工具类为避免每一个jsp运行报表时,在Jsp内都要用大段重复的代码获取数据源生成报表运行的上下文环境(Context),这里采用将生成Context的代码放在公共类中,每次Jsp发布报表的时候,只需将该类在Jsp内引入即可。工具类代码如下:import java.io.FileInputStream;import java.io.InputStream;import java.sql.Connection;import java.sql.SQLException;import javax.sql.DataSource;import org.springframework.context.ApplicationContext;import org.springframework.context.support.ClassPathXmlApplicationContext;import com.runqian.report4.model.ReportDefine;import com.runqian.report4.model.engine.ExtCellSet;import com.runqian.report4.usermodel.Context;import com.runqian.report4.usermodel.DataSourceConfig;import com.runqian.report4.util.ReportUtils;public class CalReportUtils{public static Context getContext(){//读取spring配置文件,生成Spring上下文环境ApplicationContext ctx = new ClassPathXmlApplicationContext(new String[]{”applicationContext.xml”});//通过getBean方式获取到Spring配置文件内的数据源,其中”mysqlDataSource”为//Spring内数据库连接池的Bean名称。DataSource ds = (DataSource)ctx.getBean(”mysqlDataSource”);Connection connection = null ;try {//通过DataSource获取到数据库连接对象connectionconnection = ds.getConnection();} catch (SQLException e) {e.printStackTrace();}//设置报表运算使用的授权文件,这里是固定格式。String license = “F:/runqianWindowServer.lic”;ExtCellSet.setLicenseFileName(license);//创建报表运行时的上下文环境,这里引入类时要注意,应该是润乾包内的ContextContext ct = new Context();//设置报表设计时使用的数据源名称ct.setDefDataSourceName(”mysqlCon”);//设置报表运行的数据库连接ct.setConnection(”mysqlCon”,connection);//数据源配置DataSourceConfig dsoc = new DataSourceConfig(10, true, “GBK”, “GBK”, false);ct.setDataSourceConfig(”mysqlCon”, dsoc);//返回报表运行的上下文环境对象ctreturn ct;}}2、工具类配置将编写好的工具类放在应用的Web-inf/classes下,重启应用服务器,使其加载在classpath中。第三步:defineBean方式发布报表的Jsp文件这里要采用defineBean的方式发布报表,下面是具体的Jsp例子:<%@ page language=”java” import=”java.util.*” pageEncoding=”GBK”%><%@ taglib uri=”/WEB-INF/runqianReport4.tld” prefix=”report” %><%@ page import=”com.runqian.report4.usermodel.Context” %>//引入报表运行上下文环境工具类<%@page import=”com.runqian.jolei.common.CalReportUtils”%><%@ page import=”java.io.*”%><%@ page import=”java.util.*”%><%@ page import=”com.runqian.report4.model.ReportDefine” %><%@ page import=”com.runqian.report4.util.ReportUtils” %><%String path = request.getContextPath();String basePath = request.getScheme()+”://”+request.getServerName()+”:”+request.getServerPort()+path+”/”;%><!DOCTYPE HTML PUBLIC “-//W3C//DTD HTML 4.01 Transitional//EN”><html><head><base href=”<%=basePath%>”><title>获取Spring数据源方式发布报表</title></head><body><%//通过工具类获取一个context对象,从而创建出报表运行所需环境Context ctx = CalReportUtils.getContext();//报表路径,可相对应用根目录String reportFilePath = “E:/aaaa.raq”;InputStream file;ReportDefine rd = null;try {//使用流的方式将报表读入file = new FileInputStream(reportFilePath);//使用报表工具类读取报表流,生成ReportDefine报表对象rd = (ReportDefine)ReportUtils.read( file );} catch (Exception e) {e.printStackTrace();}request.setAttribute(”reportBean”,rd);request.setAttribute( “myContext”, ctx );%><table align=center><tr><td><!-defineBean方式发布报表标签使用,srcType指定为defineBean,beanName指定为request中的名称reportBean,contextName指定为request中的myContext。到此就可以正常发布展现报表了–><report:html name=”report1″ srcType=”defineBean” beanName=”reportBean” contextName=”myContext”/></td></tr></table></body></html>