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

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

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

    隨筆-13  評論-28  文章-63  trackbacks-0

    應用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 2006-10-31 17:53 七匹狼 閱讀(497) 評論(0)  編輯  收藏 所屬分類: java
    主站蜘蛛池模板: 亚洲美女大bbbbbbbbb| 亚洲色图综合在线| 亚洲女人影院想要爱| 暖暖日本免费中文字幕| 国产精品久久久亚洲| 中文字幕无码免费久久| 亚洲AV无码一区二区乱孑伦AS| 久久精品无码免费不卡| 亚洲性猛交XXXX| 暖暖免费在线中文日本| 亚洲男女性高爱潮网站| 在线观看AV片永久免费| 亚洲日韩一中文字暮| 免费va人成视频网站全| j8又粗又长又硬又爽免费视频| 国产亚洲精品自在线观看| 野花香高清在线观看视频播放免费 | 亚洲精品成人网站在线观看| 99在线免费视频| 亚洲天堂一区二区| 黄色片在线免费观看| 日韩精品亚洲专区在线影视| 亚洲无码精品浪潮| 免费无码毛片一区二区APP| 456亚洲人成在线播放网站| 好爽好紧好大的免费视频国产| 成人免费观看男女羞羞视频| 久久亚洲精品中文字幕三区| 亚洲视频在线免费看| 国产精品亚洲一区二区无码| 亚洲永久精品ww47| 福利免费观看午夜体检区| 国产精品亚洲专区一区| 亚洲AV无码乱码在线观看富二代| 国产乱子精品免费视观看片| 色噜噜的亚洲男人的天堂| 国产亚洲精品国看不卡| 日韩中文字幕精品免费一区| 国产成人亚洲精品电影| 亚洲一区二区影院| 免费一区二区三区四区五区|