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








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:








//構造查詢條件
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配置文件就可以把英文改成中文。同時還可以指定導出文件的類型以及文件名。




如果不指定文件名,在點擊導出excel的時候,就會在ie窗口中打開excel文件。很煩人!
指定文件名后就可以選擇保存和打開了。
Trackback: http://tb.blog.csdn.net/TrackBack.aspx?PostId=1076047