Pager类:
package
com.zeroidea.common;
public
class
Pager
{
private
int
totalRows;
//
总行数
private
int
pageSize;
//
单页数据项
private
int
currentPage;
//
当前页号
private
int
totalPages;
//
总页数
private
int
startRows;
//
当前页在数据库中记录位置
public
Pager()
{
}
public
Pager(
int
totalRows)
{
//
指定总行数据
this
.setPageSize(
10
);
//
每页 10条数据
this
.setTotalRows(totalRows);
int
pages
=
totalRows
/
pageSize;
if
((totalRows
%
pageSize)
>
0
)
{
pages
++
;
}
this
.setTotalPages(pages);
this
.setStartRows(
0
);
this
.setCurrentPage(
1
);
}
/** */
/**
*
@return
the currentPage
*/
public
int
getCurrentPage()
{
return
currentPage;
}
/** */
/**
*
@param
currentPage the currentPage to set
*/
public
void
setCurrentPage(
int
currentPage)
{
this
.currentPage
=
currentPage;
}
/** */
/**
*
@return
the pageSize
*/
public
int
getPageSize()
{
return
pageSize;
}
/** */
/**
*
@param
pageSize the pageSize to set
*/
public
void
setPageSize(
int
pageSize)
{
this
.pageSize
=
pageSize;
}
/** */
/**
*
@return
the startRows
*/
public
int
getStartRows()
{
return
startRows;
}
/** */
/**
*
@param
startRows the startRows to set
*/
public
void
setStartRows(
int
startRows)
{
this
.startRows
=
startRows;
}
/** */
/**
*
@return
the totalPages
*/
public
int
getTotalPages()
{
return
totalPages;
}
/** */
/**
*
@param
totalPages the totalPages to set
*/
public
void
setTotalPages(
int
totalPages)
{
this
.totalPages
=
totalPages;
}
/** */
/**
*
@return
the totalRows
*/
public
int
getTotalRows()
{
return
totalRows;
}
/** */
/**
*
@param
totalRows the totalRows to set
*/
public
void
setTotalRows(
int
totalRows)
{
this
.totalRows
=
totalRows;
}
/** */
/**
* 第一页
*/
public
void
fristPage()
{
this
.setCurrentPage(
1
);
this
.setStartRows(
0
);
}
/** */
/**
* 前一页
*/
public
void
previousPage()
{
int
nowPage
=
this
.getCurrentPage();
if
(nowPage
==
1
)
{
return
;
}
this
.setCurrentPage(
--
nowPage);
this
.setStartRows((nowPage
-
1
)
*
this
.getPageSize());
}
/** */
/**
* 后一页
*/
public
void
nextPage()
{
int
nowPage
=
this
.getCurrentPage();
if
(nowPage
==
this
.getTotalPages())
{
this
.lastPage();
return
;
}
this
.setCurrentPage(nowPage
+
1
);
this
.setStartRows(nowPage
*
this
.getPageSize());
}
/** */
/**
* 最后一页
*/
public
void
lastPage()
{
this
.setCurrentPage(
this
.getTotalPages());
this
.setStartRows((
this
.getTotalPages()
-
1
)
*
this
.getPageSize());
}
/** */
/**
* 刷新页
*
@param
currentPage
*/
public
void
refreshPage(
int
currentPage)
{
this
.setCurrentPage(currentPage);
this
.setStartRows((currentPage
-
1
)
*
this
.getPageSize());
if
(currentPage
>
this
.getTotalPages())
{
this
.lastPage();
}
}
}
数据查询:
/** */
/**
* 取得总数据行 :有更简单的方法请分享
*/
public
int
selectDataRows()
{
int
rows
=
0
;
List list
=
null
;
Session session
=
null
;
Transaction transaction
=
null
;
Query query
=
null
;
try
{
session
=
SessionFactory.currentSession();
transaction
=
session.beginTransaction();
query
=
session
.createQuery(
"
select msg from Msg as msg
"
);
list
=
query.list();
rows
=
list.size();
transaction.commit();
session.close();
}
catch
(Exception excp)
{
session.close();
}
return
rows;
}
/** */
/**
* 分页查询数据
*
*
@param
pager
*
@return
0 1 0: Success 1: Fail
*/
public
List selectData(Pager pager)
{
List list
=
null
;
Session session
=
null
;
Transaction transaction
=
null
;
Query query
=
null
;
try
{
session
=
SessionFactory.currentSession();
transaction
=
session.beginTransaction();
query
=
session.createQuery(
"
select msg from Msg as msg order by msg.msgId desc
"
);
query.setFirstResult(pager.getStartRows());
//
设置起始行
query.setMaxResults(pager.getPageSize());
//
设置取数据行数
list
=
query.list();
transaction.commit();
session.close();
}
catch
(Exception excp)
{
session.close();
}
return
list;
}
Action 控制:
/** */
/**
* 查询 方法,,按分页查询
*
*
@param
mapping
*
@param
form
*
@param
request
*
@param
response
*
@return
*/
public
void
selectData(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response)
{
List list
=
null
;
int
currentPage
=
1
;
MsgForm msgForm
=
(MsgForm) form;
String pageMethod
=
request.getParameter(
"
pageMethod
"
);
//
存放请求页方法
String currentPageTemp
=
request.getParameter(
"
currentPage
"
);
//
存放当前页
OperTable operTable
=
new
OperTable();
//
操作表类
Pager pager
=
new
Pager(operTable.selectDataRows());
//
页面控制类
if
(currentPageTemp
==
null
)
{
pager.setCurrentPage(
1
);
}
else
{
currentPage
=
Integer.parseInt(currentPageTemp);
}
pager.setCurrentPage(currentPage);
if
(pageMethod
==
null
)
{
pager.fristPage();
//
到首页
System.out.println(
"
首页
"
);
}
else
{
if
(pageMethod.equals(
"
previousPage
"
))
{
pager.previousPage();
//
到前一页
System.out.println(
"
前一页
"
);
}
else
if
(pageMethod.equals(
"
nextPage
"
))
{
pager.nextPage();
//
到后一页
System.out.println(
"
后一页
"
);
}
else
if
(pageMethod.equals(
"
lastPage
"
))
{
pager.lastPage();
//
到尾页
System.out.println(
"
尾页
"
);
}
else
if
(pageMethod.equals(
"
refreshPage
"
))
{
pager.refreshPage(currentPage);
System.out.println(currentPage);
System.out.println(
"
刷新页
"
);
}
else
{
pager.fristPage();
//
到首页
System.out.println(
"
首页
"
);
}
}
request.setAttribute(
"
pager
"
, pager);
request.setAttribute(
"
msgdata
"
, list);
request.setAttribute(
"
info
"
,
"
已查询数据
"
);
msgForm.reset(mapping, request);
}
JSP显示分页: href这样用:
<
logic:present name
=
"
pager
"
>
<
a href
=
"
msg.do?method=select&pageMethod=fristPage¤tPage=<bean:write name='pager' property='currentPage'/>
"
>
首页
</
a
>
<
a href
=
"
msg.do?method=select&pageMethod=previousPage¤tPage=<bean:write name='pager' property='currentPage'/>
"
>
前一页
</
a
>
<
a href
=
"
msg.do?method=select&pageMethod=nextPage¤tPage=<bean:write name='pager' property='currentPage'/>
"
>
后一页
</
a
>
<
a href
=
"
msg.do?method=select&pageMethod=lastPage¤tPage=<bean:write name='pager' property='currentPage'/>
"
>
尾页
</
a
>
共有
<
span
class
=
"
font-normal-red
"
><
bean:write name
=
"
pager
"
property
=
"
totalRows
"
/></
span
>
条记录,当前第
<
span
class
=
"
font-normal-red
"
><
bean:write name
=
"
pager
"
property
=
"
currentPage
"
/></
span
>
页,共有
<
span
class
=
"
font-normal-red
"
><
bean:write name
=
"
pager
"
property
=
"
totalPages
"
/></
span
>
页
</
logic:present
>
<
html:link
>
这样用
<
logic:present name
=
"
pager
"
>
<
html:link page
=
"
/msg.do?method=select&pageMethod=fristPage
"
paramId
=
"
currentPage
"
paramName
=
"
pager
"
paramProperty
=
"
currentPage
"
>
首页
</
html:link
>
<
html:link page
=
"
/msg.do?method=select&pageMethod=previousPage
"
paramId
=
"
currentPage
"
paramName
=
"
pager
"
paramProperty
=
"
currentPage
"
>
前一页
</
html:link
>
<
html:link page
=
"
/msg.do?method=select&pageMethod=nextPage
"
paramId
=
"
currentPage
"
paramName
=
"
pager
"
paramProperty
=
"
currentPage
"
>
下一页
</
html:link
>
<
html:link page
=
"
/msg.do?method=select&pageMethod=lastPage
"
paramId
=
"
currentPage
"
paramName
=
"
pager
"
paramProperty
=
"
currentPage
"
>
尾页
</
html:link
>
共有
<
span
class
=
"
font-normal-red
"
><
bean:write name
=
"
pager
"
property
=
"
totalRows
"
/>
</
span
>
条记录,当前第
<
span
class
=
"
font-normal-red
"
><
bean:write name
=
"
pager
"
property
=
"
currentPage
"
/>
</
span
>
页,共有
<
span
class
=
"
font-normal-red
"
><
bean:write name
=
"
pager
"
property
=
"
totalPages
"
/>
</
span
>
页
</
logic:present
>
posted on 2006-11-30 16:26
一手的小窝窝 阅读(161)
评论(0) 编辑 收藏 所属分类:
JAVA