明宇报表2.5之简单测试

来源:互联网 发布:makefile 源码分析 编辑:程序博客网 时间:2024/04/29 17:33

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


   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 blocke.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 0
原创粉丝点击