声明:本文代码来自“西安健飞软件”内部,由小洋提供全套技术支持!在此感谢!
PageList
类
package
com.hp.struts.util;
import
java.util.List;
public
class
PageList {
private
Pages
page
=
null
;
//
分页对象
private
List
objectList
=
null
;
//
对象集合
private
String
pageStr
=
""
;
//
分页字符串
public
List getObjectList() {
return
objectList
;
}
public
void
setObjectList(List objectList) {
this
.
objectList
= objectList;
}
public
Pages getPage() {
return
page
;
}
public
void
setPage(Pages page) {
this
.
page
= page;
pageStr
=page.getLastPageBreak();
}
public
String getPageStr() {
return
pageStr
;
}
public
void
setPageStr(String pageStr) {
this
.
pageStr
= pageStr;
}
}
Pages
类
package
com.hp.struts.util;
import
javax.servlet.http.HttpServletRequest;
public
class
Pages {
private
String
fileName
=
""
;
private
int
pageSize
=2;
//
当页显示记录数
private
int
allPage
=1;
//
总页数
private
int
cPage
=1;
//
当前页
private
int
sPage
=1;
//
当前页开始记录数
private
int
allRecord
=1;
//
总记录数
private
String
lastPageBreak
=
""
;
//
分页字符串
public
Pages(){
}
public
Pages(String fileName,HttpServletRequest request){
this
.
fileName
=request.getContextPath()+fileName;
//
获得当前页
String cPageStr = request.getParameter(
"cpage"
)==
null
?
"1"
:request.getParameter(
"cpage"
);
int
cPageInt = 0;
try
{
cPageInt = Integer.parseInt(cPageStr);
}
catch
(Exception e){
System.
out
.println(
"com.s6.util.Pages = "
+e.getMessage());
cPageInt = 1;
}
finally
{
cPage
= cPageInt;
}
}
//
计算总页数
,
判断当前页的合法性,计算当前页的开始记录数,生成分页字符串
public
void
doPage(){
//
计算总页数
this
.
allPage
=(
int
)(
this
.
allRecord
+
this
.
pageSize
-1)/
this
.
pageSize
;
//
判断当前页的合法性
if
(
this
.
cPage
<0){
this
.
cPage
=1;
}
if
(
this
.
cPage
>
this
.
allPage
){
this
.
cPage
=
this
.
allPage
;
}
//
计算当前页开始记录数
this
.
sPage
=(
this
.
cPage
-1)*
this
.
pageSize
+1;
//
生成分页字符串
StringBuffer str=
new
StringBuffer();
//
判断是否有问号
“
?
”
if
(
this
.
fileName
.indexOf(
"?"
)==-1){
this
.
fileName
=
this
.
fileName
+
"?1=1"
;
}
str.append(
"<table width=/"100%/" height=/"100%/">"
);
//
添加表单
str.append(
"<form name=/"pagelist/" method=/"post/" action=/""
);
str.append(
this
.
fileName
+
"/">"
);
str.append(
"<tr><td width=/"100%/" height=/"100%/" align=/"center/" valign=/"middle/">"
);
str.append(
"
总纪录数
"
+
this
.
allRecord
+
"
条
"
);
str.append(
" "
);
//
首页
if
(
this
.
cPage
>1){
str.append(
"<a href="
+
this
.
fileName
+
"&cpage=1>
首页
</a>"
);
}
else
{
str.append(
"
首页
"
);
}
str.append(
" "
);
//
上一页
if
(
this
.
cPage
>1){
str.append(
"<a href="
);
str.append(
this
.
fileName
+
"&cpage="
);
str.append(
this
.
cPage
-1);
str.append(
">
上一页
</a>"
);
}
else
{
str.append(
"
上一页
"
);
}
str.append(
" "
);
//
下一页
if
(
this
.
cPage
<
this
.
allPage
){
str.append(
"<a href="
);
str.append(
this
.
fileName
+
"&cpage="
);
str.append(
this
.
cPage
+1);
str.append(
">
下一页
</a>"
);
}
else
{
str.append(
"
下一页
"
);
}
str.append(
" "
);
//
末页
if
(
this
.
cPage
<
this
.
allPage
){
str.append(
"<a href="
);
str.append(
this
.
fileName
+
"&cpage="
);
str.append(
this
.
allPage
);
str.append(
">
末页
</a>"
);
}
else
{
str.append(
"
末页
"
);
}
str.append(
" "
);
//
第几页
str.append(
"
第
"
);
str.append(
this
.
cPage
);
str.append(
"
页
"
);
str.append(
" "
);
//
共几页
str.append(
"
共
"
);
str.append(
this
.
allPage
);
str.append(
"
页
"
);
str.append(
" "
);
//
跳转页
for
(
int
i=1;i<=
this
.
allPage
;i++){
str.append(
" "
);
if
(i==
this
.
cPage
){
str.append(i);
}
else
{
str.append(
"<a href="
);
str.append(
this
.
fileName
+
"&cpage="
);
str.append(i);
str.append(
">"
+i+
"</a>"
);
}
}
//str.append("
跳转到
");
//str.append("<select name=/"cpage/" onchange=/"document.pagelist.submit()/" >");
//for(int i=1;i<=this.allPage;i++){
// str.append("<option value=/"");
// str.append(i);
// str.append("/"");
// if(this.cPage==i){
// str.append(" selected");
// }
// str.append(">");
// str.append(i);
// str.append("</option>");
//}
//str.append("</select>
页
");
str.append(
"</td></tr></form>"
);
str.append(
"</table>"
);
lastPageBreak
=str.toString();
}
public
int
getAllPage() {
return
allPage
;
}
public
void
setAllPage(
int
allPage) {
this
.
allPage
= allPage;
}
public
int
getCPage() {
return
cPage
;
}
public
void
setCPage(
int
page) {
cPage
= page;
}
public
String getFileName() {
return
fileName
;
}
public
void
setFileName(String fileName) {
this
.
fileName
= fileName;
}
public
String getLastPageBreak() {
return
lastPageBreak
;
}
public
void
setLastPageBreak(String lastPageBreak) {
this
.
lastPageBreak
= lastPageBreak;
}
public
int
getPageSize() {
return
pageSize
;
}
public
void
setPageSize(
int
pageSize) {
this
.
pageSize
= pageSize;
}
public
int
getSPage() {
doPage();
return
sPage
;
}
public
void
setSPage(
int
page) {
sPage
= page;
}
public
int
getAllRecord() {
return
allRecord
;
}
public
void
setAllRecord(
int
allRecord) {
this
.
allRecord
= allRecord;
}
}
Action
类里的分页方法(函数)
public
ActionForward fenye(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response) {
String userId=request.getParameter(
"userId"
);
UserDAO userDao=
new
UserDAO();
Pages pages =
new
Pages(
"/user.do?method=fenye"
,request);
pages.setPageSize(5);
//
当前页显示的记录数
PageList pageList = userDao.getUserpagelist(pages);
request.setAttribute(
"emps"
,pageList);
return
mapping.findForward(
"fenye"
);
}
DAO
里的分页方法
public
PageList getUserpagelist(Pages pages)
{
PageList pageList =
new
PageList();
List list =
new
ArrayList();
String sql=
"select * from T_USER_SYS"
;
//
执行
SQL
语句获得结果集
ResultSet rs=
this
.doExcuteQuery(sql);
try
{
//
首先将光标移动到最后一行
rs.last();
pages.setAllRecord(rs.getRow());
//
记录集总行数
rs.absolute(pages.getSPage());
//
光标定位到页的第一行
int
i=0;
//
循环变量
//
判断记录总行数是否大于
0
,并循环创建
USER
对象
if
(pages.getAllRecord()>0)
{
do
{
UserBean userBean=
new
UserBean();
userBean.setUserId(rs.getString(1));
userBean.setUserName(rs.getString(2));
userBean.setUserPwd(rs.getString(3));
userBean.setUserState(rs.getString(4));
list.add(userBean);
i++;
}
while
(rs.next()&&i<pages.getPageSize());
}
}
catch
(SQLException e) {
e.printStackTrace();
}
finally
{
this
.closeConn();
}
pageList.setPage(pages);
pageList.setObjectList(list);
return
pageList;
}
分页的
JSP
页面
<%@
page
language
=
"java"
pageEncoding
=
"UTF-8"
%>
<%@
taglib
uri
=
"http://struts.apache.org/tags-bean"
prefix
=
"bean"
%>
<%@
taglib
uri
=
"http://struts.apache.org/tags-html"
prefix
=
"html"
%>
<%@
taglib
uri
=
"http://struts.apache.org/tags-logic"
prefix
=
"logic"
%>
<%@
taglib
uri
=
"http://struts.apache.org/tags-tiles"
prefix
=
"tiles"
%>
<%@
taglib
uri
=
"http://java.sun.com/jsp/jstl/core"
prefix
=
"c"
%>
<!
DOCTYPE
HTML
PUBLIC
"-//W3C//DTD HTML 4.01 Transitional//EN"
>
<
html:html
lang
=
"true"
>
<
head
>
<
html:base
/>
<
title
>
fenye.jsp
</
title
>
<
meta
http-equiv
=
"pragma"
content
=
"no-cache"
>
<
meta
http-equiv
=
"cache-control"
content
=
"no-cache"
>
<
meta
http-equiv
=
"expires"
content
=
"0"
>
<
meta
http-equiv
=
"keywords"
content
=
"keyword1,keyword2,keyword3"
>
<
meta
http-equiv
=
"description"
content
=
"This is my page"
>
<!--
<link rel="stylesheet" type="text/css" href="styles.css">
-->
</
head
>
<
body
>
<
table
>
<
c:forEach
items
=
"${emps.objectList}"var="emp">
<
tr
>
<
td
height
=
"25"
align
=
"cneter"
class
=
"table3"
bgcolor
=
"dfdfdf"
>
<
input
type
=
"checkbox"
name
=
"ck2"
value
=
"${emp.userId}"/></td>
<
td
align
=
"center"
class
=
"table3"
bgcolor
=
"dfdfdf"
>
${emp.userName}
</
td
>
<
td
align
=
"center"
valign
=
"middle"
class
=
"table3"
bgcolor
=
"dfdfdf"
>
${emp.userPwd}
</
td
>
<
td
align
=
"center"
valign
=
"middle"
class
=
"table3"
bgcolor
=
"dfdfdf"
>
<
html:link
action
=
"/deluser.do?userId=${emp.userId}">del</html:link>
</
td
>
</
tr
>
</
c:forEach
>
<
tr
>
<
td
align
=
"left"
><
c:out
value
=
"${emps.pageStr}"escapeXml="false"></c:out></td>
</
tr
>
</
table
>
</
body
>
</
html:html
>
SSH中的DAO
public
PageList userList(Pages pages) {
PageList pageList =
new
PageList();
List list =
new
ArrayList();
Session session =
this
.getSession();
Transaction t = session.beginTransaction();
// 获得结果集
Query query = session.createQuery(
"from jfis.bean.JfisUserSys"
);
//记录集总行数
pages.setAllRecord(query.list().size());
query.setFirstResult(pages.getSPage()-1);
query.setMaxResults(5);
List rs = query.list();
Iterator iterator = rs.iterator();
//
得到分页字符串
pages.getSPage();
int
i = 0;
// 循环变量
// 判断记录总行数是否大于0,并循环创建USER对象
if
(pages.getAllRecord() > 0) {
do
{
list = rs;
i++;
}
while
(iterator.hasNext() && i < pages.getPageSize());
pageList.setPage(pages);
pageList.setObjectList(list);
t.commit();
session.close();
}
return
pageList;
}