如何使用Spring配置文件内的数据源发布报表
1个回答
推荐于2016-05-06 · 知道合伙人数码行家
huanglenzhi
知道合伙人数码行家
向TA提问 私信TA
知道合伙人数码行家
采纳数:117538
获赞数:517193
长期从事计算机组装,维护,网络组建及管理。对计算机硬件、操作系统安装、典型网络设备具有详细认知。
向TA提问 私信TA
关注
展开全部
具体的实现步骤如下:
第一步:设计报表
这里使用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获取到数据库连接对象connection
connection = ds.getConnection();
} catch (SQLException e) {
e.printStackTrace();
}
//设置报表运算使用的授权文件,这里是固定格式。
String license = “F:/runqianWindowServer.lic”;
ExtCellSet.setLicenseFileName(license);
//创建报表运行时的上下文环境,这里引入类时要注意,应该是润乾包内的Context
Context ct = new Context();
//设置报表设计时使用的数据源名称
ct.setDefDataSourceName(”mysqlCon”);
//设置报表运行的数据库连接
ct.setConnection(”mysqlCon”,connection);
//数据源配置
DataSourceConfig dsoc = new DataSourceConfig(10, true, “GBK”, “GBK”, false);
ct.setDataSourceConfig(”mysqlCon”, dsoc);
//返回报表运行的上下文环境对象ct
return 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>
第一步:设计报表
这里使用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获取到数据库连接对象connection
connection = ds.getConnection();
} catch (SQLException e) {
e.printStackTrace();
}
//设置报表运算使用的授权文件,这里是固定格式。
String license = “F:/runqianWindowServer.lic”;
ExtCellSet.setLicenseFileName(license);
//创建报表运行时的上下文环境,这里引入类时要注意,应该是润乾包内的Context
Context ct = new Context();
//设置报表设计时使用的数据源名称
ct.setDefDataSourceName(”mysqlCon”);
//设置报表运行的数据库连接
ct.setConnection(”mysqlCon”,connection);
//数据源配置
DataSourceConfig dsoc = new DataSourceConfig(10, true, “GBK”, “GBK”, false);
ct.setDataSourceConfig(”mysqlCon”, dsoc);
//返回报表运行的上下文环境对象ct
return 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>
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询