應用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