隨筆 - 6  文章 - 129  trackbacks - 0
          <2025年6月>
          25262728293031
          1234567
          891011121314
          15161718192021
          22232425262728
          293012345

          常用鏈接

          留言簿(14)

          隨筆檔案(6)

          文章分類(467)

          文章檔案(423)

          相冊

          收藏夾(18)

          JAVA

          搜索

          •  

          積分與排名

          • 積分 - 827218
          • 排名 - 49

          最新評論

          閱讀排行榜

          評論排行榜

          應用displaytag在struts中完成大數據量分頁顯示,Oracle數據庫

           

          JSP文件:

           

          <%@ taglib uri="/WEB-INF/displaytag.tld" prefix="disp" %>

          <disp:table name="resultList" export="true" pagesize="100" requestURI="logQueryAction.do" sort="external" id="element" partialList="true" size="resultSize">
                    
          <disp:column property="operdate" title="操作時間" ></disp:column>
                    
          <disp:column property="pername" title="操作人員" ></disp:column>
                    
          <disp:column property="opertype" title="操作類型" ></disp:column>
          </disp:table> 

           

          name="resultList" 將記錄集存在session或者request中的鍵值
          export="true" 是否顯示導出選項
          pagesize="100" 每頁顯示100條數據
          requestURI="logQueryAction.do"  struts中action的名稱,如果記錄少,可以直接分頁
          sort="external"  外部排序
          id="element"   表格id值,用于程序得相關的參數
          partialList="true"  分段從數據庫中讀數據
          size="resultSize"  記錄的總條數,用于計算總頁數

           

          struts action:

           

          String pageIndexName = new org.displaytag.util.ParamEncoder("element").encodeParameterName(org.displaytag.tags.TableTagParameters.PARAMETER_PAGE);   // 頁數的參數名
                  
          int pageSize = 100;   //每頁顯示的條數
                  
          int pageIndex = GenericValidator.isBlankOrNull(request.getParameter(pageIndexName))?0:(Integer.parseInt(request.getParameter(pageIndexName)) - 1);  //當前頁數
          String sqlCount 
          = "select count(*)  from user_log a ";  //用于統計總記錄數的sql語句
                  String sql 
          = " select * from (select rownum as rid, t1.* from (select b.pername as pername,to_char(a.operdate,'yyyy-mm-dd hh24:mi:ss') as operdate," +
                          
          " decode(a.opertype,'D','刪除','M','修改','其他') as opertype, a.hphm as hphm from user_log a, " +
                          
          " (select asuser.userid as userid,nvl(asempmsg.pername,asuser.loginname) as pername from asuser,ASEMPMSG where asuser.perid=ASEMPMSG.perid(+)) b" +
                          
          " where a.userid=b.userid ";   //查詢語句
                      //構造查詢條件
                  StringBuffer sb 
          = new StringBuffer();
                  
          if(logQueryForm.getCzrqStart()!=null && !"".equals(logQueryForm.getCzrqStart())){
                      sb.append(
          " and a.operdate > to_date('"+logQueryForm.getCzrqStart()+"','yyyy-mm-dd')");
                  }

                  
          if(logQueryForm.getCzrqEnd()!=null && !"".equals(logQueryForm.getCzrqEnd())){
                      sb.append(
          " and a.operdate <= to_date('"+logQueryForm.getCzrqEnd()+"','yyyy-mm-dd')");
                  }

                  
          if(logQueryForm.getCzlx()!=null && !"".equals(logQueryForm.getCzlx())){
                      sb.append(
          " and a.opertype = '"+logQueryForm.getCzlx()+"'");
                  }

                  
          if(logQueryForm.getCzry()!=null && !"".equals(logQueryForm.getCzry())){
                      sb.append(
          " and a.userid = '"+logQueryForm.getCzry()+"'");
                  }

               

                  sqlCount 
          += sb.toString();
                  sql 
          += sb.toString()+" order by a.operdate desc) t1 where rownum<="
                                  
          + (pageIndex + 1* pageSize + " ) t2 where t2.rid>"+ pageIndex * pageSize;  //分頁讀取語句
                  
                  
          //System.out.println(sb.toString());
                  DBBean db = new DBBean();
                  ResultSet rs 
          = null;
                  PreparedStatement prep 
          = null;
                  
          try{
                      List resultList 
          = db.getResultList(sql);   //將ResultSet保存在List里返回
                      request.setAttribute(
          "resultList",resultList);  //把結果存入request
                      prep 
          = db.getConnection().prepareStatement(sqlCount);   
                      rs 
          = prep.executeQuery();
                      
          if(rs.next()){
                          request.setAttribute(
          "resultSize",new Integer(rs.getInt(1)));     //將總記錄數保存成Intger實例保存在request中
                      }

                  }

                  
          catch(Exception ex){
                      ex.printStackTrace();
                  }

                  
          finally{
                      
          if(db!=null){
                          db.closeConnection();    //關閉連接
                      }
           
                  }

           

          其中的頁面導航是英文的,只要修改org.displaytag.properties.TableTag.properties配置文件就可以把英文改成中文。同時還可以指定導出文件的類型以及文件名。

          export.excel=true
          export.excel.label
          =<span class="export excel">Excel </span>
          export.excel.include_header
          =true
          export.excel.filename
          =export.xls

          如果不指定文件名,在點擊導出excel的時候,就會在ie窗口中打開excel文件。很煩人!
          指定文件名后就可以選擇保存和打開了。



          Trackback: http://tb.blog.csdn.net/TrackBack.aspx?PostId=1076047



          posted on 2007-09-15 10:32 Ke 閱讀(3006) 評論(0)  編輯  收藏 所屬分類: tag
          主站蜘蛛池模板: 东辽县| 阳城县| 佛山市| 门头沟区| 平湖市| 文登市| 游戏| 柳河县| 秭归县| 桂平市| 龙胜| 海宁市| 叙永县| 盐亭县| 盐边县| 丁青县| 凤冈县| 保山市| 合川市| 孙吴县| 安多县| 泰安市| 辽宁省| 平谷区| 资中县| 泗洪县| 微博| 固始县| 轮台县| 连城县| 高陵县| 肇州县| 中阳县| 阳江市| 石嘴山市| 兴国县| 英山县| 新乡县| 都匀市| 从江县| 丽江市|