鸿 网 互 联 www.68idc.cn

当前位置 : 服务器租用 > 网站制作教程 > JSP > >

JPivot小例子

来源:互联网 作者:佚名 时间:2015-10-26 08:37
环境 Windows XP mondrian-3.0.0.10550 apache-tomcat-5.5.26 jdk-1_5_0_14 mysql-6.0.0 不需要单独下载JPivot(已经包含在mondrain的demo中) 首先注意到两个要点: JPivot 使用 WCF (Web Component Framework) ,基于XML/XSLT来渲染Web UI组件。 JPivot是完

环境
Windows XP
mondrian-3.0.0.10550
apache-tomcat-5.5.26
jdk-1_5_0_14
mysql-6.0.0
不需要单独下载JPivot(已经包含在mondrain的demo中)

 

首先注意到两个要点:

JPivot 使用 WCF (Web Component Framework)  ,基于XML/XSLT来渲染Web UI组件。
JPivot是完全基于taglib的。


1. 寻找突破口

从哪里开始呢,当然是先从demo入手了,在浏览器里面打开demo,点击其中的例子,发现他们指向的链接是

http://localhost/mondrian/testpage.jsp?query=mondiran

http://localhost/mondrian/testpage.jsp?query=xmla

http://localhost/mondrian/testpage.jsp?query=fourthier

这下比较清楚目标了,先研究一下testpage.jsp吧。
 

2. testpage.jsp研究

在testpage.jsp中,比较重要的一段是

<%-- include query and title, so this jsp may be used with different queries --%>
<wcf:include id="include01" httpParam="query" prefix="/WEB-INF/queries/" suffix=".jsp"/>
<c:if test="${query01 == null}">
  <jsp:forward page="/index.jsp"/>
</c:if>

<%-- define table, navigator and forms --%>
<jp:table id="table01" query="#{query01}"/>


其中<wcf:include id="include01" httpParam="query" prefix="/WEB-INF/queries/" suffix=".jsp"/>取得参数query的值,并且匹配位置在/WEB-INF/queries/,扩展名是jsp的文件。

另一句<jp:table id="table01" query="#{query01}"/>指明了query的名称是query01。

注意这两个query是不一样的,wcf的query是http的参数名称叫做query,而jp的query是mondrian的query对象。

在testpage.jsp的后面还定义了form,navigator,chart等等,这里先不做深入研究了。
 

3.mondrian.jsp研究

下面看看testpage.jsp用到的mondrian.jsp,打开/WEB-INF/queries/mondrian.jsp,哈哈,真是似曾相识啊。这里定义了mondrian的query,它的id是query01,还有jdbc的相关信息。以及这个query对应的mdx查询select语句。

再打开xmla.jsp发现也是同样的结构,这样就比较清楚了。下面就可以依葫芦画瓢,进行我们的测试了。


4.准备

a.在数据库(mysql)test中建3个表tb_employee(职员表),tb_time(时间表),tb_salary(薪酬表)。

表结构如下:
create table t_emp
(
     emp_id     int,             --职员id    
     empe_name   varchar(10)        --职员姓名  --感谢bulengjiangshi指正
     emp_name  varchar(10)  --职员姓名
);

create table t_time
(
    time_id   int,        --时间id
    time_year  int,       --年
    time_month int        --月
);

create  table t_salary
(
    emp_id  int,                --职员id   
    time_id      int,                --时间id
    salary       int           --薪酬
);

当然,为了使系统能够运行,还需要读者向数据库表中插入一些数据。

b.编写schema
<?xml version="1.0"?>
  <Schema name="Mondrian">
    <Cube name="CubeTest">
    <Table name="t_salary"/>

    <Dimension name="Emp" foreignKey="emp_id">
      <Hierarchy hasAll="true" primaryKey="emp_id">
        <Table name="t_emp"/>
        <Level name="empID" column="emp_id" uniqueMembers="true">
           <Property name="empName" column="emp_name"/>
       </Level>
       </Hierarchy>
    </Dimension>

    <Dimension name="Time" foreignKey="time_id">
      <Hierarchy hasAll="false" primaryKey="time_id">
        <Table name="t_time"/>
        <Level name="timeYear" column="time_year" uniqueMembers="false"/> 
        <Level name="timeMonth" column="time_month" uniqueMembers="false"/>
      </Hierarchy>
    </Dimension>

    <Measure name="Salary" column="salary" aggregator="sum"/>

  </Cube>
</Schema>

文件路径为/webapps/mondrian/WEB-INF/queries/mysql_test.xml

c.写一个mysql_test.jsp放在/WEB-INF/queries目录
<%@ page session="true" contentType="text/html; charset=ISO-8859-1" %>
<%@ taglib uri="http://www.tonbeller.com/jpivot" prefix="jp" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jstl/core" %>

<jp:mondrianQuery id="query01" jdbcDriver="com.mysql.jdbc.Driver" jdbcUrl="jdbc:mysql://localhost:3306/test" catalogUri="/WEB-INF/queries/mysql_test.xml"
   jdbcUser="root" jdbcPassword="root" connectionPooling="false">

select {[Measures].[Salary]} ON COLUMNS, {[Emp].[empId].Members} ON ROWS from CubeTest
</jp:mondrianQuery>

<c:set var="title01" scope="session">Test Query uses Mondrian OLAP</c:set>

5.启动tomcat

  在浏览器地址栏输入
http://localhost:8080/mondrian/testpage.jsp?query=mysql_test

大功告成,看到我们期望的画面了。


参考帖子:
原作:shuangpinglee
<一个JPivot+Mondrian入门的小例子>
http://blog.csdn.net/shuangpinglee/archive/2007/07/12/1687293.aspx

原作:kswaking
<Mondrian——有影响的“艺术家”>
http://blog.csdn.net/kswaking/archive/2004/07/29/55091.aspx

原作:infowain
<数据仓库研究之二--mondrian入门>
http://blog.csdn.net/infowain/archive/2006/06/24/829074.aspx
<数据仓库研究之三--JPivot入门>
http://blog.csdn.net/infowain/archive/2006/06/25/832181.aspx

原作:calvinxiu
<穷人的通用OLAP方案I--序>
http://blog.csdn.net/calvinxiu/archive/2005/02/06/282385.aspx
<穷人的通用OLAP方案II--Mondrian引擎>
http://blog.csdn.net/calvinxiu/archive/2005/02/06/282387.aspx
<穷人的通用OLAP方案III--JPivot表现层>
http://blog.csdn.net/calvinxiu/archive/2005/04/19/353468.aspx

网友评论
<