版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
Mondrian使用教程通過本教程,您將了解到什么是Mondiran,及如何將mondrian支持添加到您的JavaWeb項目中。在閱讀本教程之前,您可能需要掌握以下概念:OLAP(聯(lián)機分析處理On-LineAnalyticalProcessing),您可以通過閱讀ROLAP的概念.pptx來了解OLAPMDX多維表達式,您可以通過閱讀MDX的基本語法及概念.pptx來了解MDX 1.Mondrian是什么?Mondrian是一個開源項目。一個用Java寫成的OLAP引擎。它用MDX語言實現(xiàn)查詢,從關(guān)系數(shù)據(jù)庫(RDBMS)中讀取數(shù)據(jù)。然后經(jīng)過JavaAPI以多維的方式對結(jié)果進行展示。Mondrian的使用方式同JDBC驅(qū)動類似。可以非常方便的與現(xiàn)有的Web項目集成1.1Mondrian的體系結(jié)構(gòu)(Architecture)MondrianOLAP系統(tǒng)由四個層組成;從最終用戶到數(shù)據(jù)中心,順序為: 1.1.1表現(xiàn)層(thepresentationlayer) 1.1.2維度層(thedimensionallayer) 1.1.3集合層(thestarlayer) 1.1.4存儲層(thestoragelayer)結(jié)構(gòu)圖如下:模式管理器Mondrian的模式文件,它定義了關(guān)系數(shù)據(jù)到多維數(shù)據(jù)的映射。需要我們生成表現(xiàn)層多維層集合層存儲層1.1.1表現(xiàn)層(thepresentationlayer)表現(xiàn)層決定了最終用戶將在他們的顯示器上看到什么,及他們?nèi)绾瓮到y(tǒng)產(chǎn)生交互。有許多方法可以用來向用戶顯示多維數(shù)據(jù)集,有pivot表(一種交互式的表),pie,line和圖表(barcharts)。它們可以用Swing或JSP來實現(xiàn)。表現(xiàn)層以多維"文法(grammar)(維、度量、單元)”的形式發(fā)出查詢,然后OLAP服務器返回結(jié)果。下面我們將對mondrian在javaweb端使用的jpivot表現(xiàn)層進行簡單介紹Jpivot表現(xiàn)層JPivot
是Mondrian的表現(xiàn)層TagLib,一直保持著良好的開發(fā)進度。
您可以通過訪問jpivot的官方網(wǎng)站/以獲得更多的幫助及支持
jpivot使用XML/XSLT渲染OLAP報表:
JPivot
使用WCF(WebComponentFramework)
,基于XML/XSLT來渲染W(wǎng)ebUI組件。這使它顯得十分另類。不過,OLAP報表這種非常復雜但又有規(guī)律可循的東西,最適合使用XSLT來渲染。
jpivot完全基于JSP+TagLib:JPivot另外一個可能使人不慣的地方是它完全基于taglib而不是大家熟悉的MVC模式。但它可以很方便的將多維數(shù)據(jù)展示給最終用戶,如下表格:jpivot其實是一個自定義jsp的標簽庫。它基于XML/XSLT配置來生成相應的html。所幸的是,我們并不需要了解太多關(guān)于這方面的內(nèi)容,我們只要掌握相應jsp標簽的使用即可。在本教程的實例中,我們將會對一些常用到的jpivot標簽進行講解。您還可以通過漢化WEB-INF/jpivot下的xml文件來完成對jpivot的漢化工作1.1.2維度層(thedimensionallayer)維度層用來解析、驗證和執(zhí)行MDX查詢要求。一個MDX查詢要通過幾個階段來完成:首先是計算坐標軸(axes),再者計算坐標軸axes中cell的值。為了提高效率,維度層把要求查詢的單元成批發(fā)送到集合層,查詢轉(zhuǎn)換器接受操作現(xiàn)有查詢的請求,而不是對每個請求都建立一個MDX聲明。集合層負責維護和創(chuàng)建集合緩存,一個集合是在內(nèi)存中緩存一組單元值,這些單元值由一組維的值來確定。維度層對這些單元發(fā)出查詢請求,如果所查詢的單元值不在緩存中,則集合管理器(aggregationmanager)會向存儲層發(fā)出查詢請求1.1.3集合層(thestarlayer)1.1.4存儲層(thestoragelayer)存儲層是一個關(guān)系型數(shù)據(jù)庫(RDBMS)。它負責創(chuàng)建集合的單元數(shù)據(jù),和提供維表的成員。1.2APIMondrian為客戶端提供一個用于查詢的API因為到目前為止,并沒有一個通用的用于OLAP查詢的API,因此Mondrian提供了它私有的API.盡管如此,一個常使用JDBC的人將同樣發(fā)現(xiàn)它很熟悉.不同之處僅在于它使用的是MDX查詢語言,而非SQL下面的java片段展示了如何連接到Mondrian,然后執(zhí)行一個查詢,最后打印結(jié)果.importmondrian.olap.*;
importjava.io.PrintWriter;
Connectionconnection=DriverManager.getConnection(
"Provider=mondrian;"+
"Jdbc=jdbc:odbc:MondrianFoodMart;"+
"Catalog=/WEB-INF/FoodMart.xml;",
null,
false);
Queryquery=connection.parseQuery(
"SELECT{[Measures].[UnitSales],[Measures].[StoreSales]}oncolumns,"+
"{[Product].children}onrows"+
"FROM[Sales]"+
"WHERE([Time].[1997].[Q1],[Store].[CA].[SanFrancisco])");
Resultresult=connection.execute(query);
result.print(newPrintWriter(System.out));與JDBC類似,一個Connection由DriverManager創(chuàng)建,
Query對象類似于JDBC的Statement,它通過傳遞一個MDX語句來創(chuàng)建.Result對象類似于JDBC的ResultSet,只不過它里面保存的是多維數(shù)據(jù)您可以通過查看Mondrian幫助文檔里的javadoc來獲取更多關(guān)于MondrianAPI的資料通過上面的介紹,您應該對mondrian的體系有一個基本的了解。下面我們將通過一個簡單的例子來加深您的理解。2.一個簡單的Mondrian例子現(xiàn)在讓我們用一個簡單的例子來說明將Mondrian支持添加到您javaweb的具體步驟。2.1準備開發(fā)工具及環(huán)境本測試需要的環(huán)境:
操作系統(tǒng):Windows2000;
Web服務器:tomcat6.0;
關(guān)系數(shù)據(jù)庫:sql
server2000;
開發(fā)工具:eclipse+myeclipse;
JDBC驅(qū)動:jtds-1.2.2;
您可以在/上下載到tomcat的最新版本及幫助;您可以在/上下載到myeclipse的最新版本及相應的eclipse開發(fā)平臺版本2.2準備Mondrian資源:
從/projects/mondrian/下載Mondrian的最新版本(目前版本為3.0,大約有50M+大小)。點擊此處下載2.3創(chuàng)建項目啟動eclipse。在eclipse中新創(chuàng)建一個web項目,名為Tezz。注意需要加入JSTL支持。具體步驟如下:點擊此處新打開建web項目對話框2.3.1打開新建web項目對話框1.輸入項目名稱Tezz2.在這里打勾以加入JSTL支持3.選擇JSTL1.14.單擊此處完成創(chuàng)建一個新項目Tezz的文件結(jié)構(gòu)如下:項目名稱Web根目錄2.4添加必須的文件將下載的壓縮包進行解壓。完成后,進入文件夾可以看到如下目錄結(jié)構(gòu)。雙擊進入lib文件夾。進入此文件夾Lib文件夾有如下內(nèi)容:注意到這里的mondrian.war文件是一個可直接布署的項目,我們需要將它解壓,然后從中取出我們所需要的文件。(建議將其擴展名改成zip,然后直接右鍵解壓)我們需要的文件在這個項目文件中進入解壓后的文件夾,選中jpivot、wcf二個文件夾及busy.jsp、error.jsp、testpage.jsp三個文件,我們需要將這些資源復制到我們測試項目的WebRoot文件夾中。按ctrl+C鍵復制。注:jpivot、wcf這兩個文件夾包含mondrian使用的圖像和css文件。Busy.jsp顯示等待頁面、error.jsp顯示出錯頁面、testpage.jsp這文件的用處將在后面介紹。切換到eclipse界面,在我們的Tezz項目的WebRoot文件夾處右擊鼠標,在彈出的菜單中選擇Paste(粘貼)即可粘貼完成后的項目結(jié)構(gòu)如下注意:因為我們還未將所有資料復制到項目中,因此eclipse會顯示錯誤圖標包含jpivot所用到的圖像及css樣式包含wcf所用到的圖像及css樣式調(diào)用jpivot標簽來處理MDX查詢請求,并將最終結(jié)果以html的格式返回給用戶最后進入WEB-INF文件夾(在上面步驟中解壓的項目文件mondrian.war里),選中jpivot、lib、wcf這三個文件夾,同樣需要復制它們到測試項目的WEB-INF文件夾中。Jpivot、wcf這兩個文件夾包含jpivot和wcf用于生成用戶界面的配置文件(*.xml、*.xsl)及標簽文件(*.tld)的定義。Lib文件夾包含的是mondrian所要用的java包。切換到eclipse界面,在我們的Tezz項目的WebRoot文件夾處右擊鼠標,在彈出的菜單中選擇Paste(粘貼)至此Mondrian的支持添加完畢,下面我們將配置web.xml,讓我們的項目能夠使用到mondrian的功能。包含jpivot和wcf用于生成用戶界面的配置文件(*.xml)及標簽文件(*.tld)的定義2.5配置web.xml用eclipse打開我們在上面解壓的布署項目的WEB-INF/web.xml文件我們需要從該web.xml文件中抽取出所需要的配置。過濾器(filter)
復制右圖中所示的xml代碼到我們測試項目Tezz的web.xml文件中。
作用:
這個過濾器在訪問/testpage.jsp前被調(diào)用。它被設(shè)計成jpivot的前端控制器,用于判斷并將用戶的請求發(fā)送到某個頁面。
注:
在實際項目中可以使用您自己定義的servlet或使用其他技術(shù)來替代它以提供更多的功能<filter><filter-name>JPivotController</filter-name><filter-class>com.tonbeller.wcf.controller.RequestFilter</filter-class><init-param><param-name>indexJSP</param-name><param-value>/index.html</param-value><description>如果這是一個新的會話,則轉(zhuǎn)到此頁面</description></init-param><init-param><param-name>errorJSP</param-name><param-value>/error.jsp</param-value><description>出錯時顯示的頁面</description></init-param><init-param><param-name>busyJSP</param-name><param-value>/busy.jsp</param-value><description>這個頁面用于當用戶點擊一個查詢時,在這個查詢還未將結(jié)果還回給用戶時所顯示的界面</description></init-param></filter><filter-mapping><filter-name>JPivotController</filter-name><url-pattern>/testpage.jsp</url-pattern></filter-mapping>復制下面的listener到我們的web.xml文件中(用于初始化一些資源)Printservlet,該servlet用于將數(shù)據(jù)生成Excel文件或pdf文件并返回給用戶,如果您需要用到該功能,則需要將其copy到您項目的web.xml文件中<listener><listener-class>mondrian.web.taglib.Listener</listener-class></listener><!–資源初始化--><listener><listener-class>com.tonbeller.tbutils.res.ResourcesFactoryContextListener</listener-class></listener><servlet><servlet-name>Print</servlet-name><display-name>Print</display-name><description>Defaultconfigurationcreatedforservlet.</description><servlet-class>com.tonbeller.jpivot.print.PrintServlet</servlet-class></servlet><servlet-mapping><servlet-name>Print</servlet-name><url-pattern>/Print</url-pattern></servlet-mapping><servlet><servlet-name>MDXQueryServlet</servlet-name><servlet-class>mondrian.web.servlet.MDXQueryServlet</servlet-class><init-param><param-name>connectString</param-name><param-value>@mondrian.webapp.connectString@</param-value></init-param></servlet><servlet-mapping><servlet-name>MDXQueryServlet</servlet-name><url-pattern>/mdxquery</url-pattern></servlet-mapping>MDXQueryServlet用于接受并執(zhí)行一個MDX查詢,然后將該查詢以Html表格的形式返回。其中的參數(shù)connectString用于指定連接到數(shù)據(jù)庫的字符串,例如使用jtds驅(qū)動連接到sqlserver2000的字符串如下:
Provider=mondrian;Jdbc=jdbc:jtds:sqlserver://localhost/Tezz;user=sa;password=123456;Catalog=/WEB-INF/queries/tezz.xml;JdbcDrivers=net.sourceforge.jtds.jdbc.Driver;如果您需要用到該功能,則需要將其copy到您項目的web.xml文件中。DisplayChart和GetChart這兩個Servlet用于生成圖表和將其顯示給最終用戶,如果您需要用到該功能,則需要將其copy到您項目的web.xml文件中。<!--jfreechartprovidedservlet--><servlet><servlet-name>DisplayChart</servlet-name><servlet-class>org.jfree.chart.servlet.DisplayChart</servlet-class></servlet><!--jfreechartprovidedservlet--><servlet><servlet-name>GetChart</servlet-name><display-name>GetChart</display-name><description>Defaultconfigurationcreatedforservlet.</description><servlet-class>com.tonbeller.jpivot.chart.GetChart</servlet-class></servlet><servlet-mapping><servlet-name>DisplayChart</servlet-name><url-pattern>/DisplayChart</url-pattern></servlet-mapping><servlet-mapping><servlet-name>GetChart</servlet-name><url-pattern>/GetChart</url-pattern></servlet-mapping>它們用于向用戶生成和顯示如下所示的各種圖表:最后添加以下標簽庫到我們的web.xml項目中即可<taglib><taglib-uri>/wcf</taglib-uri><taglib-location>/WEB-INF/wcf/wcf-tags.tld</taglib-location></taglib><taglib><taglib-uri>/jpivot</taglib-uri><taglib-location>/WEB-INF/jpivot/jpivot-tags.tld</taglib-location></taglib>到這里,您應該對mondrian在web.xml的配置有一定的了解,并可按需要添加相應的功能。
接下來我們將要創(chuàng)建本例子所要用到的表格及數(shù)據(jù)。2.6準備測試用表本例使用的表結(jié)構(gòu)如下所示:Sale是事實表,它有兩個維:客戶(customer)維和由兩個表組成的產(chǎn)品(Product)維。表格的創(chuàng)建很簡單,您只需要將下面的sql語句導入數(shù)據(jù)庫即可2.6.1使用以下sql語句創(chuàng)建表
/**銷售表*/
createtableSale(
saleIdintnotnull,
proIdintnull,
cusIdintnull,
unitPricefloatnull, --單價
numberintnull, --數(shù)量
constraintPK_SALEprimarykey(saleId)
) /**用戶表*/
createtableCustomer(
cusIdintnotnull,
genderchar(1)null, --性別
constraintPK_CUSTOMERprimarykey(cusId)
)
/**產(chǎn)品表*/
createtableProduct(
proIdintnotnull,
proTypeIdintnull,
proNamevarchar(32)null,
constraintPK_PRODUCTprimarykey(proId)
)
/**產(chǎn)品類別表*/
createtableProductType(
proTypeIdintnotnull,
proTypeNamevarchar(32)null,
constraintPK_PRODUCTTYPEprimarykey(proTypeId)
)
2.6.2使用以下sql語句導入數(shù)據(jù) insertintoCustomer(cusId,gender)values(1,'F')
insertintoCustomer(cusId,gender)values(2,'M')
insertintoCustomer(cusId,gender)values(3,'M')
insertintoCustomer(cusId,gender)values(4,'F') insertintoproducttype(proTypeId,proTypeName)values(1,'電器')
insertintoproducttype(proTypeId,proTypeName)values(2,'數(shù)碼')
insertintoproducttype(proTypeId,proTypeName)values(3,'家具')
insertintoproduct(proId,proTypeId,proName)values(1,1,'洗衣機')
insertintoproduct(proId,proTypeId,proName)values(2,1,'電視機')
insertintoproduct(proId,proTypeId,proName)values(3,2,'mp3')
insertintoproduct(proId,proTypeId,proName)values(4,2,'mp4')
insertintoproduct(proId,proTypeId,proName)values(5,2,'數(shù)碼相機')
insertintoproduct(proId,proTypeId,proName)values(6,3,'椅子')
insertintoproduct(proId,proTypeId,proName)values(7,3,'桌子')
insertintosale(saleId,proId,cusId,unitPrice,number)values(1,1,1,340.34,2)
insertintosale(saleId,proId,cusId,unitPrice,number)values(2,1,2,140.34,1)
insertintosale(saleId,proId,cusId,unitPrice,number)values(3,2,3,240.34,3)
insertintosale(saleId,proId,cusId,unitPrice,number)values(4,3,4,540.34,4)
insertintosale(saleId,proId,cusId,unitPrice,number)values(5,4,1,80.34,5)
insertintosale(saleId,proId,cusId,unitPrice,number)values(6,5,2,90.34,26)
insertintosale(saleId,proId,cusId,unitPrice,number)values(7,6,3,140.34,7)
insertintosale(saleId,proId,cusId,unitPrice,number)values(8,7,4,640.34,28)
insertintosale(saleId,proId,cusId,unitPrice,number)values(9,6,1,140.34,29)
insertintosale(saleId,proId,cusId,unitPrice,number)values(10,7,2,740.34,29)
insertintosale(saleId,proId,cusId,unitPrice,number)values(11,5,3,30.34,28)
insertintosale(saleId,proId,cusId,unitPrice,number)values(12,4,4,1240.34,72)
insertintosale(saleId,proId,cusId,unitPrice,number)values(13,3,1,314.34,27)
insertintosale(saleId,proId,cusId,unitPrice,number)values(14,3,2,45.34,27)2.7建立模式(schema)文件一個模式定義了一個多維數(shù)據(jù)庫.它包含一個邏輯模型(logicalmodel)、一組數(shù)據(jù)立方(consistingofcubes)、層次(hierarchies)、和成員(members),并映射到物理模型(關(guān)系數(shù)據(jù)庫)上。簡單的說,配置一個模式就是配置一個關(guān)系數(shù)據(jù)結(jié)構(gòu)到多維數(shù)據(jù)結(jié)構(gòu)的映射。注:
關(guān)于mondrian的模式及模式的配置,您可以通過閱讀mondrian的基本模式.pptx來了解。這里我們只對其進行了簡單介紹。2.7.1創(chuàng)建模式文件:模式文件的創(chuàng)建很簡單。首先在WEB-INF下新建一個queries的文件夾,然后在該文件夾下創(chuàng)建一個名為tezz.xml的文件。再按下面的步驟將xml元素添加入即可。將模式文件tezz.xml創(chuàng)建在這里2.7.2配置模式文件:
添加數(shù)據(jù)立方Sales:
往tezz.xml中添加如下代碼:<?xmlversion="1.0"encoding="UTF-8"?><Schemaname="tezz"><Cubename="Sales"> <!--事實表sale(facttable)-->
<Tablename="sale"/></Cube></Schema>該模式的名稱數(shù)據(jù)立方的名稱數(shù)據(jù)立方Sales在關(guān)系數(shù)據(jù)庫中對應的事實表的表名稱
添加數(shù)據(jù)立方Sales的維:
添加客戶維:<!--客戶維--><Dimensionname="客戶性別"foreignKey="cusId">
<HierarchyhasAll="true"allMemberName="所有性別"primaryKey="cusId">
<Tablename="Customer"></Table>
<Levelname="gender"column="gender"></Level>
</Hierarchy></Dimension><?xmlversion="1.0"encoding="UTF-8"?><Schemaname="tezz"> <Cubename="Sales"> <!--事實表sale(facttable)--> <Tablename="sale"/> </Cube></Schema>復制到該維的名稱事實表sale中用于引用維表Customer的外鍵列表示該維的所有成員維表Customer的主鍵維表Customer在關(guān)系數(shù)據(jù)庫中的名稱級別的名稱級別gender在維表Customer中的列名稱添加產(chǎn)品維(因為產(chǎn)品維由兩個表連接而成,因此比客戶維復雜些):<!--產(chǎn)品類別維--><Dimensionname="產(chǎn)品類別"foreignKey="proId">
<HierarchyhasAll="true"allMemberName="所有產(chǎn)品"
primaryKey="proId"primaryKeyTable="product">
<joinleftKey="proTypeId"rightKey="proTypeId">
<Tablename="product"/>
<Tablename="producttype"></Table>
</join>
<Levelname="proTypeId"column="proTypeId"
nameColumn="proTypeName"uniqueMembers="true" table="producttype"/>
<Levelname="proId"column="proId"nameColumn="proName"
uniqueMembers="true"table="product"/>
</Hierarchy></Dimension>將上面的代碼復制在客戶維的下面即可因為Product維有兩個表,所以您必須在這里指定該維的主表Join元素,用于將兩個以上的表連接起來需要指定包含該級別的表添加度量(共有三個度量:數(shù)量、平均單價和總銷售額):<!--產(chǎn)品數(shù)量度量--><Measurename="數(shù)量"column="number"aggregator="sum"
datatype="Numeric"/><Measurename="總銷售額"aggregator="sum"formatString="¥#,##0.00">
<!--unitPrice*number所得值的列-->
<MeasureExpression>
<SQLdialect="generic">(unitPrice*number)</SQL>
</MeasureExpression></Measure><CalculatedMembername="平均單價"dimension="Measures">
<Formula>[Measures].[總銷售額]/[Measures].[數(shù)量]</Formula>
<CalculatedMemberPropertyname="FORMAT_STRING"
value="¥#,##0.00"/></CalculatedMember>該度量在事實表中的列度量的名稱該度量的聚合方式該度量的數(shù)據(jù)類型"總銷售額”這個度量并沒有引用事實表中的列,而是使用sql片斷unitPrice*number來生成一個列用于定義一個計算成員表示該計算成員是一個度量該計算成員的生成規(guī)則將這些xml元素添加在維元素下面即可<?xmlversion="1.0"encoding="UTF-8"?><Schemaname="tezz"><Cubename="Sales">
<!--事實表(facttable)-->
<Tablename="sale"/>
<!--客戶維-->
<Dimensionname="客戶性別"foreignKey="cusId">
<HierarchyhasAll="true"allMemberName="所有性別"
primaryKey="cusId">
<Tablename="Customer"></Table>
<Levelname="gender"column="gender"></Level>
</Hierarchy>
</Dimension>
<!--產(chǎn)品類別維-->
<Dimensionname="產(chǎn)品類別"foreignKey="proId">
<HierarchyhasAll="true"allMemberName="所有產(chǎn)品"
primaryKey="proId"primaryKeyTable="product">
<joinleftKey="proTypeId"rightKey="proTypeId">
<Tablename="product"/>
<Tablename="producttype"></Table>
</join>
<Levelname="proTypeId"column="proTypeId"
nameColumn="proTypeName"uniqueMembers="true"table="producttype"/>
<Levelname="proId"column="proId"nameColumn="proName"
uniqueMembers="true"table="product"/>
</Hierarchy>
</Dimension>
<Measurename="數(shù)量"column="number"aggregator="sum"
datatype="Numeric"/>
<Measurename="總銷售額"aggregator="sum"formatString="¥#,##0.00">
<!--unitPrice*number所得值的列-->
<MeasureExpression>
<SQLdialect="generic">(unitPrice*number)</SQL>
</MeasureExpression>
</Measure>
<CalculatedMembername="平均單價"dimension="Measures">
<Formula>[Measures].[總銷售額]/[Measures].[數(shù)量]</Formula>
<CalculatedMemberPropertyname="FORMAT_STRING"
value="¥#,##0.00"/>
</CalculatedMember></Cube></Schema>最后生成的tezz.xml文件內(nèi)容如下:2.8編寫MDX查詢語句在模式文件定義完成之后,我們就可以根據(jù)它來編寫相應MDX查詢語句了。本例所用的MDX語句如下:select
{[Measures].[數(shù)量],[Measures].[平均單價],[Measures].[總銷售額]}oncolumns,
{([產(chǎn)品類別].[所有產(chǎn)品],[客戶性別].[所有性別])}onrowsfrom
[Sales]數(shù)據(jù)請求子句,與sql中的select類似。它決定MDX語句的軸維度指定從多維數(shù)據(jù)源sales中獲取數(shù)據(jù)(即上面定義的數(shù)據(jù)立方sales)定義第一個軸維度(別名columns)第二個軸維度(別名rows)您應該可以很清楚的看出,columns軸維度包含的是度量。Rows軸維度包含的是維度中的層次的所有成員(allMemberName)2.9創(chuàng)建查詢文件現(xiàn)在我們將創(chuàng)建一個jsp文件,該jsp使用jpivot的mondrianQuery標簽來完成查詢。該文件最后將被testpage.jsp使用。在/WEB-INF/queries文件夾下面創(chuàng)建一名為tezz的jsp文件。該jsp包含如下內(nèi)容:<%@pagesession="true"contentType="text/html;charset=UTF-8"%><%@tagliburi="/jpivot"prefix="jp"%><%@taglibprefix="c"uri="/jstl/core"%><jp:mondrianQueryid="query01"
catalogUri="/WEB-INF/queries/tezz.xml"
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 二零二五版物流企業(yè)市場調(diào)研與分析合同3篇
- 娛樂行業(yè)安全工作總結(jié)制藥行業(yè)安全工作總結(jié)
- 引導學生樹立正確語文學習態(tài)度
- 電子產(chǎn)品客服工作總結(jié)
- 網(wǎng)頁設(shè)計美工工作總結(jié)
- 音樂行業(yè)演出場地衛(wèi)生消毒計劃
- 二零二五年度鋼結(jié)構(gòu)建筑拆除與安裝一體化合同
- 2025版消防安全設(shè)施安裝合同3篇
- 二零二五年度環(huán)保節(jié)能設(shè)備銷售、安裝、能效評估服務合同3篇
- 二零二五版珍貴樹木銷售合作協(xié)議3篇
- 2025年1月浙江高考英語聽力試題真題完整版(含答案+文本+MP3)
- 《人工智能發(fā)展史》課件
- 《UL線材培訓資識》課件
- 小學一年級數(shù)學20以內(nèi)的口算題(可直接打印A4)
- 《精密板料矯平機 第1部分:型式和基本參數(shù)》
- 舞蹈課家長會
- 自來水質(zhì)量提升技術(shù)方案
- 工業(yè)自動化生產(chǎn)線操作手冊
- 房地產(chǎn)銷售任務及激勵制度
- 2024年內(nèi)蒙古中考語文試卷五套合卷附答案
- 并購指南(如何發(fā)現(xiàn)好公司)
評論
0/150
提交評論