zoukankan      html  css  js  c++  java
  • 明宇报表2.5之简单测试

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


       1、设计报表模板


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

    2、编码

    在webroot下添加如下文件


    两个cab在明宇的包里面都有  ReportCenter.jsp 也有 分别在DeploymentViewer和DeploymentJSP 里面

    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的管理加载项中都可以看到明宇报表的插件



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

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



    记录学习的脚步


  • 相关阅读:
    private知识笔记
    finalize知识笔记
    java实现队列的练习
    测试知识笔记(2)
    static和final知识笔记
    测试知识笔记(1)
    overloading知识笔记
    windows Copssh + git 搭建git服务器
    Java Servlet规范
    身份证验证JS代码
  • 原文地址:https://www.cnblogs.com/liangxinzhi/p/4275544.html
Copyright © 2011-2022 走看看