明宇报表2.5之简单测试

   本文是关于明宇报表的简单示例,主要是记录学习的脚步


   1、设计报表模板


设计好报表后 导出报表模板  

2、编码

在webroot下添加如下文件


两个cab在明宇的包里面都有  ReportCenter.jsp 也有 分别在Deployment\Viewer和Deployment\JSP 里面

mrf文件为第一步设计导出的模板文件


测试代码:

test_report.jsp

<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<%@page import="com.ming.webreport.MREngine"%>
<%@page import="com.undergrowth.util.MRReportUtil"%>
<%@page import="com.undergrowth.db.OracleDbAssist"%>
<%@page import="javax.servlet.jsp.tagext.TryCatchFinally"%>
<%@ taglib uri="WEB-INF/Ming.tld" prefix="ming" %>
<%
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>My JSP 'test_report.jsp' starting page</title>
    
	<meta http-equiv="pragma" content="no-cache">
	<meta http-equiv="cache-control" content="no-cache">
	<meta http-equiv="expires" content="0">    
	<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
	<meta http-equiv="description" content="This is my page">
	<!--
	<link rel="stylesheet" type="text/css" href="styles.css">
	-->

  </head>
  
  <body>
  <%
  try{
	  MREngine engine=new MREngine(pageContext);
	  //设置报表根目录
	  engine.setRootPath("/reports/"); 
	  //添加数据集
	  engine.addMRDataSet("Test_Nologging2",MRReportUtil.transResultSetToMRDataSet(new OracleDbAssist().executeQuery("SELECT tn.rule_code,tn.table_name,tn.table_comment,tn.column_name,tn.column_comment,tn.check_sql,tn.data_sql,tn.sum_sql from Test_Nologging2 tn")));
	  //家在报表模板
	  engine.addReport("Test_Nologging2");
	  //绑定数据集到模板
	  engine.bind();
	  //浏览器输出
  }catch(Exception ex){
	  ex.printStackTrace();  
  }
 %>
  <ming:MRViewer id="mingView" width="100%" height="100%" shownow="true"></ming:MRViewer>
  </body>
</html>



工具类

package com.undergrowth.util;

import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;

import com.ming.webreport.DataRecord;
import com.ming.webreport.MRDataSet;
import com.ming.webreport.MREngine;

/**
 * 明宇报表工具类
 * @author undergrowth
 *
 */
public class MRReportUtil {

	
	/**
	 * 转换ResultSet数据集到MRDataSet
	 * @param rs
	 * @return
	 * @throws SQLException
	 */
	public static MRDataSet transResultSetToMRDataSet(ResultSet rs) throws SQLException{
		
		MRDataSet mrDataSet=new MRDataSet();
		ArrayList<DataRecord> dataRecList=new ArrayList<DataRecord>();
		
		while(rs.next()){
			DataRecord dataRecord=new DataRecord();
			//获取每一行对应的列名和列值
			for(int i=1;i<=rs.getMetaData().getColumnCount();i++){
				dataRecord.setValue(rs.getMetaData().getColumnName(i), rs.getObject(i));
			}
			dataRecList.add(dataRecord);
		}
		
		mrDataSet.addRows(dataRecList);
		return mrDataSet;
		
	}
	
	
}


数据库辅助类

package com.undergrowth.db;

import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.HashMap;
import java.util.Hashtable;

import javax.naming.Context;
import javax.naming.InitialContext;
import javax.naming.NamingException;
import javax.sql.DataSource;

import org.apache.log4j.LogManager;
import org.apache.log4j.Logger;

/**
 * 连接oracle数据库的辅助类
 * 单例模式构建
 * @author undergrowth
 *
 */
public class OracleDbAssist {
	
	private static Logger logger=LogManager.getLogger(OracleDbAssist.class);
	
	private  DataSource dataSource;
	private Connection conn;
	private Statement stmt;
	private ResultSet rs;
	
	private OracleDbAssist(){}
	//使用volatile关键字 保证在多个线程中获取oDbAssist无误
	private volatile static OracleDbAssist oDbAssist =null;
	/**
	 * 双层锁
	 * @return
	 */
	public static OracleDbAssist getInstance(){
		if(oDbAssist==null){
			synchronized (OracleDbAssist.class) {
				if(oDbAssist==null) {
					oDbAssist=new OracleDbAssist();
					oDbAssist.getDataSourceByJndi("SJPC");
				}
			}
		}
		return oDbAssist;
	}
	
	public DataSource getDataSource() {
		return dataSource;
	}
	public Connection getConn() {
		return conn;
	}
	public void setConn(Connection conn) {
		this.conn = conn;
	}
	public Statement getStmt() {
		return stmt;
	}
	public void setStmt(Statement stmt) {
		this.stmt = stmt;
	}
	public ResultSet getRs() {
		return rs;
	}
	public void setRs(ResultSet rs) {
		this.rs = rs;
	}
	
	
	/**
	 * 通过jndi从weblogic里面获取数据源
	 * @return boolean  flag 用于标示是否获取到数据源
	 */
	private  boolean getDataSourceByJndi(String jndiDataSource){
		boolean flag=false;
		//提供初始化jndi上下文的参数
		Hashtable env=new Hashtable();
		//初始化工厂
		env.put(Context.INITIAL_CONTEXT_FACTORY, "weblogic.jndi.WLInitialContextFactory");
		env.put(Context.PROVIDER_URL, "t3://localhost:7001");
		
		try {
			Context ctx = new InitialContext(env);
			dataSource=(DataSource) ctx.lookup(jndiDataSource);
			flag=true;
			logger.info("成功获取数据源!!");
		} catch (NamingException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
			logger.error("加载数据源失败!!");
		}
		
		return flag;
	}
	
	/**
	 * 获取数据连接
	 * @return
	 * @throws SQLException
	 */
	public Connection getConnection() throws SQLException
	{
		if(getConn()==null) conn=dataSource.getConnection();
		return getConn();
	}
	
    
	/**
	 * 执行sql查询
	 * @param sql
	 * @return
	 * @throws SQLException
	 */
	public ResultSet executeQuery(String sql) throws SQLException
	{
		stmt=getConnection().createStatement();
		rs=stmt.executeQuery(sql);
		return rs;
	}
	
	
	
	
	
}


结果输出:





写这个主要是一点,被坑了好久

就是IE浏览器无法加载明宇报表

在IE的管理加载项中都可以看到明宇报表的插件



但是就是无法显示报表的话

找到明宇的控件 右键右击--》选择详细信息--》在所有站点上运行  就可以了



记录学习的脚步


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值