明宇报表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的管理加载项中都可以看到明宇报表的插件
但是就是无法显示报表的话
找到明宇的控件 右键右击--》选择详细信息--》在所有站点上运行 就可以了
记录学习的脚步
posted on 2014-12-03 10:57 liangxinzhi 阅读(431) 评论(0) 编辑 收藏 举报