<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    piliskys

      BlogJava :: 首頁 :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理 ::
      25 隨筆 :: 0 文章 :: 40 評論 :: 0 Trackbacks
    當(dāng)今的報表分頁在很多系統(tǒng)中都扮演著十分重要的角色,對于很多組件技術(shù)如CR、BO,等都是很好的報表工具,分頁技術(shù)當(dāng)然不在話下,
    在此,我所說的是一般的jsp頁面展現(xiàn)報表的討論,
    圖片找不到
    如上圖(在此只做為一舉例),一個表單一般分為表頭,表內(nèi)容和表尾,還有一些頁數(shù)的選擇,
    在此我們討論幾種實現(xiàn)的方法:
    一,一公用頁面和公用java類實現(xiàn)法---將表頭及表內(nèi)容查詢的sql及表尾內(nèi)容寫入一xml文件中,當(dāng)調(diào)用表單時,在javat程序中設(shè)用xml文件中的相應(yīng)ID,找到及解析相應(yīng)的內(nèi)容,存放在java對象中,然后在jsp頁面得到相應(yīng)的java對象加以顯示,此為一過程, 在此可謂第一次調(diào)用完成。
     當(dāng)點擊第二次調(diào)用時,此處有多種方法,1,在頁面隱藏保存相應(yīng)xml中的ID,后面同第一次程序?qū)崿F(xiàn)相同,但此處解析xml文件的開銷過大。2,將第一次存放在java對象存放在session中,這樣,先判斷session中是否有值,有值直接取出,沒有就到xml文件中解析, 此方法省去了多次解析xml文件的操作,但增加了session的負(fù)擔(dān),而且當(dāng)不再做表單查詢操作也不能很好釋放session中內(nèi)容。
    二,一查詢對應(yīng)一頁面和java類,此方法實現(xiàn)比較簡單,表樣式可以先畫好,傳入一些相應(yīng)變量進(jìn)行展現(xiàn),但這種做法很難統(tǒng)一管理,要對表結(jié)構(gòu)和樣式做變動時較難解決,而且代碼冗余度大。
    三,目前我認(rèn)為較好些的辦法, 把表中表頭即表的B部分抽取成一靜態(tài)頁面,而表ACD部分都放入xml文件中定義,此定義內(nèi)容相比之下比第一種方法減少很多,因為表B部分是對xml最難對應(yīng)的一部分,寬度、位置,名稱及對應(yīng)java變量名稱等都要定義,而對于多行表頭是更難定義,
    因為表ACD我們可以在xml中定義(此處采用spring的xml解析

     1<?xml version="1.0" encoding="GB2312"?>
     2<!DOCTYPE beans PUBLIC "-//SPRING/DTD BEAN/EN" "http://www.springframework.org/dtd/spring-beans.dtd">
     3<beans>
     4    <bean id="queryinfo" class="online.common.query.vo.QueryInfo">
     5        <property name="title"><value>發(fā)票出庫</value></property>
     6        <property name="headInfo"><ref local="headInfo"/></property>
     7        <property name="footInfo"><ref local="footInfo"/></property>
     8        <property name="sqlStr"><value><![CDATA[select t.billdataid aa,'200501' bb, '建筑發(fā)票' cc, t.billstatus dd,t.taxofficialcode ee, '1000' ff, '1005' gg, 0.98 hh,
     9t.taxtotal ii, '調(diào)撥' jj
    10from billdata t
    11              ]]></value></property>
    12    </bean>
    13    <bean id="headInfo" class="online.common.query.vo.HeadInfo">
    14        <property name="lineItemNum"><value>2</value></property>
    15        <property name="itemList">
    16           <list>
    17            <value>出庫單位</value>
    18            <value>統(tǒng)計日期</value>
    19           </list>
    20        </property>
    21        <property name="engList">
    22           <list>
    23            <value>gljg</value>
    24            <value>tjlq</value>
    25           </list>
    26        </property>
    27   </bean> 
    28   <bean id="footInfo" class="online.common.query.vo.FootInfo">
    29        <property name="itemList">
    30           <list>
    31            <value>驗收單位:</value>
    32            <value>驗收日期:</value>
    33           </list>
    34        </property>
    35        <property name="engList">
    36           <list>
    37            <value>theuser</value>
    38            <value>thedate</value>
    39           </list>
    40        </property>
    41   </bean>
    42</beans>
    然后在公用的查詢jsp頁面中expression為傳入?yún)?shù)(表頭B部分靜態(tài)頁面地址);
    <jsp:include page="<%= expression %>"  /> 
    公用頁面ACD部分
    for(int i=0;i<=headItemList.size()/lineItemNum;i++{
        headStr 
    += "<tr>";
      
    if(i==headItemList.size()/lineItemNum)  {
         ind 
    =headItemList.size()%lineItemNum ;
      }

        
    for(int j=0;j<ind;j++{
            headStr 
    += " <td  align=\"center\"  colspan=\"2\">"+ headItemList.get(i*lineItemNum+j) + "£o" + paramMap.get(engItemList.get(i*lineItemNum+j))  +"</td>";
        }

        headStr 
    += "</tr>";
    }

    %>
    <%=headStr%>
     
    <%要輸出的內(nèi)容  
               
    for(int i=0;i<pageList.size();i++){
              pageStr 
    += "<tr>";
             HashMap obj 
    =(HashMap) pageList.get(i);
                
    for(int j=0;j<coumNum;j++)
              pageStr 
    += " <td class=\"tdbg0\"  >"+obj.get(engnList.get(j)) +"</td>";
              pageStr 
    += "</tr>";
               }


    %>
    <%=pageStr%>
    <% //表尾
    String footStr = "";
          footStr 
    += "<tr>";
        
    for(int j=0;j<footList.size();j++{
            footStr 
    += " <td  align=\"center\"  colspan=\"2\">"+ footList.get(j) + "£o" + paramMap.get(engfootList.get(j))  +"</td>";
        }

        footStr 
    += "</tr>";
    %>
    <%=footStr%>

    spring映射代碼略.............
    總結(jié):我們清楚,當(dāng)一次調(diào)用報表時,無論是點第幾頁,它的ABD部分是不會變的,因此,能把此三部分都在第一次調(diào)用都生成靜態(tài)頁或此三部分在第一次生成調(diào)用后,翻頁操作就不在調(diào)用(曾試過用frame,效果不是很好),若能解決此部分,可將再次提高java和頁面的執(zhí)行效率................
    posted on 2005-11-17 17:40 霹靂火 閱讀(504) 評論(0)  編輯  收藏

    只有注冊用戶登錄后才能發(fā)表評論。


    網(wǎng)站導(dǎo)航:
     
    主站蜘蛛池模板: 成年在线观看免费人视频草莓| 亚洲精品成人无限看| 免费激情网站国产高清第一页| 区久久AAA片69亚洲| h片在线免费观看| 无遮挡a级毛片免费看| 亚洲欧洲国产日韩精品| 在线观看成人免费| 美女视频黄a视频全免费网站色窝| 国产成人精品日本亚洲| 亚洲av无码一区二区三区乱子伦| 亚洲欧洲自拍拍偷午夜色无码| 久久久久亚洲av无码专区导航 | 日韩成人在线免费视频| 一级毛片完整版免费播放一区| 亚洲精品熟女国产| 亚洲欧洲国产成人综合在线观看 | 国产亚洲欧洲Aⅴ综合一区| 成人AV免费网址在线观看| 亚洲综合伊人久久大杳蕉| 在线免费中文字幕| 国产伦精品一区二区免费| 亚洲人成电影网站久久| 国产成人A人亚洲精品无码| 国产一级淫片a免费播放口之| 99久久99久久精品免费观看| 国产成人人综合亚洲欧美丁香花| 久久亚洲AV无码精品色午夜 | 日韩电影免费在线| 114级毛片免费观看| av电影在线免费看| 男男gvh肉在线观看免费| 亚洲午夜成激人情在线影院 | 亚洲Av永久无码精品黑人| 激情内射亚洲一区二区三区| 最新国产AV无码专区亚洲| 日产乱码一卡二卡三免费| 美女视频黄的全免费视频| 久久99精品国产免费观看| 国产在线国偷精品免费看| 香蕉97碰碰视频免费|