public class Page {
private int currentPage = 1; // 当前页
private int totalPages = 0; // 总页数
private int pageRecorders = 5; // 每页5行数据
private int totalRows = 0; // 总数据行数
private int pageStartRow = 0; // 每页的起始数
private int pageEndRow = 0; // 每页显示数据的终止数
private boolean hasNextPage = false; // 是否有下一页
private boolean hasPreviousPage = false; // 是否有前一页
private List list;
public Page() {
}
public Page(List list) {
this.list = list;
totalRows = list.size();
hasPreviousPage = false;
currentPage = 1;
if ((totalRows % pageRecorders) == 0) {
totalPages = totalRows / pageRecorders;
} else {
totalPages = totalRows / pageRecorders + 1;
}
if (currentPage >= totalPages) {
hasNextPage = false;
} else {
hasNextPage = true;
}
if (totalRows < pageRecorders) {
this.pageStartRow = 0;
this.pageEndRow = totalRows;
} else {
this.pageStartRow = 0;
this.pageEndRow = pageRecorders;
}
}
/**
* @return Returns the currentPage.
*/
public String getCurrentPage() {
return this.toString(currentPage);
}
/**
* @param currentPage
* The currentPage to set.
*/
public void setCurrentPage(int currentPage) {
this.currentPage = currentPage;
}
/**
* @return Returns the pageRecorders.
*/
public int getPageRecorders() {
return pageRecorders;
}
/**
* @param pageRecorders
* The pageRecorders to set.
*/
public void setPageRecorders(int pageRecorders) {
this.pageRecorders = pageRecorders;
}
/**
* @return Returns the pageEndRow.
*/
public int getPageEndRow() {
return pageEndRow;
}
/**
* @return Returns the pageStartRow.
*/
public int getPageStartRow() {
return pageStartRow;
}
/**
* @return Returns the totalPages.
*/
public String getTotalPages() {
return this.toString(totalPages);
}
/**
* @return Returns the totalRows.
*/
public String getTotalRows() {
return this.toString(totalRows);
}
/**
* @return Returns the hasNextPage.
*/
public boolean isHasNextPage() {
return hasNextPage;
}
/**
* @param hasNextPage
* The hasNextPage to set.
*/
public void setHasNextPage(boolean hasNextPage) {
this.hasNextPage = hasNextPage;
}
/**
* @return Returns the hasPreviousPage.
*/
public boolean isHasPreviousPage() {
return hasPreviousPage;
}
/**
* @param hasPreviousPage
* The hasPreviousPage to set.
*/
public void setHasPreviousPage(boolean hasPreviousPage) {
this.hasPreviousPage = hasPreviousPage;
}
public void getFirstPage() {
currentPage = 1;
hasPreviousPage = false;
if (currentPage >= totalPages) {
hasNextPage = false;
} else {
hasNextPage = true;
}
}
public void getNextPage() {
currentPage = currentPage + 1;
if ((currentPage - 1) > 0) {
hasPreviousPage = true;
} else {
hasPreviousPage = false;
}
if (currentPage >= totalPages) {
hasNextPage = false;
} else {
hasNextPage = true;
}
}
public void getPreviousPage() {
currentPage = currentPage - 1;
if (currentPage == 0) {
currentPage = 1;
}
if (currentPage >= totalPages) {
hasNextPage = false;
} else {
hasNextPage = true;
}
if ((currentPage - 1) > 0) {
hasPreviousPage = true;
} else {
hasPreviousPage = false;
}
}
public void getLastPage() {
currentPage = totalPages;
if (currentPage == 0) {
currentPage = 1;
}
hasNextPage = false;
if ((currentPage - 1) > 0) {
hasPreviousPage = true;
} else {
hasPreviousPage = false;
}
}
public void setGotoPage(int gotoPage) {
this.currentPage = gotoPage;
hasNextPage = true;
hasPreviousPage = true;
if (currentPage <= 1) {
currentPage = 1;
hasNextPage = true;
hasPreviousPage = false;
}
if (currentPage >= this.totalPages) {
currentPage = totalPages;
hasNextPage = false;
hasPreviousPage = true;
}
}
@SuppressWarnings("unchecked")
public List getPageList() {
if (currentPage * pageRecorders < totalRows) {// 判断是否为最后一页
pageEndRow = currentPage * pageRecorders;
pageStartRow = pageEndRow - pageRecorders;
} else {
pageEndRow = totalRows;
pageStartRow = pageRecorders * (totalPages - 1);
}
List testlist = new ArrayList();
int j = 0;
for (int i = pageStartRow; i < pageEndRow; i++) {
Object obj = list.get(i);
testlist.add(j, obj);
j++;
}
return testlist;
}
public String toString(int temp) {
String str = Integer.toString(temp);
return str;
}
}
struts调用此分页的方法:action中
import java.util.List;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;
import org.langsin.computer.service.IUserService;
import org.langsin.computer.util.Page;
import org.langsin.computer.vo.User;
import org.langsin.computer.web.core.BaseAction;
/**
* MyEclipse Struts Creation date: 06-04-2007
*
* XDoclet definition:
*
* @struts.action validate="true"
*/
public class FindUserAction extends BaseAction {
private IUserService userService;
public IUserService getUserService() {
return userService;
}
public void setUserService(IUserService userService) {
this.userService = userService;
}
private List list;
private Page page;
public ActionForward findAll(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response) {
String action = null;
action = request.getParameter("action");
if (action == null || "action".equals(action)) {
list = userService.findAll();
page = new Page(list);
list = page.getPageList();
request.setAttribute("list", list);
request.setAttribute("page", page);
} else {
if (action == "firstPage" || action.equals("firstPage")) {
page.getFirstPage();
list = page.getPageList();
request.setAttribute("list", list);
request.setAttribute("page", page);
}
if (action == "nextPage" || action.equals("nextPage")) {
page.getNextPage();
list = page.getPageList();
request.setAttribute("list", list);
request.setAttribute("page", page);
}
if (action == "previousPage" || action.equals("previousPage")) {
page.getPreviousPage();
list = page.getPageList();
request.setAttribute("list", list);
request.setAttribute("page", page);
}
if (action == "lastPage" || action.equals("lastPage")) {
page.getLastPage();
list = page.getPageList();
request.setAttribute("list", list);
request.setAttribute("page", page);
}
}
return mapping.findForward("user");
}
public ActionForward findById(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response) {
String id=request.getParameter("id");
User user=userService.findById(new Integer(id));
request.setAttribute("user", user);
return mapping.findForward("updateUser");
}
}
而在前台jsp页页的写法:
<%@ page language="java" pageEncoding="GBK"%>
<%@ taglib uri="http://jakarta.apache.org/struts/tags-bean"
prefix="bean"%>
<%@ taglib uri="http://jakarta.apache.org/struts/tags-html"
prefix="html"%>
<%@ taglib uri="http://jakarta.apache.org/struts/tags-logic"
prefix="logic"%>
<html>
<head>
<title>显示所有用户列表</title>
</head>
<body>
显示列表
<hr>
<table border="1">
<tr>
<td>
用户名
</td>
<td>
密码
</td>
<td>
修改
</td>
<td>
删除
</td>
</tr>
<logic:present name="list">
<logic:iterate id="element" name="list">
<tr>
<td>
<bean:write name="element" property="username" />
</td>
<td>
<bean:write name="element" property="usepwd" />
</td>
<td>
<a href="findUser.do?method=findById&id=<bean:write name="element" property="userid" />">修改</a>
</td>
<td>
删除
</td>
</tr>
</logic:iterate>
</logic:present>
</table>
<html:link page="/findUser.do?method=findAll&action=firstPage">首页</html:link>
<logic:equal name="page" property="hasNextPage" value="true">
<html:link page="/findUser.do?method=findAll&action=nextPage">下一页</html:link>
</logic:equal>
<logic:equal name="page" property="hasNextPage" value="false">
下一页
</logic:equal>
<logic:equal name="page" property="hasPreviousPage" value="true">
<html:link page="/findUser.do?method=findAll&action=previousPage">上一页</html:link>
</logic:equal>
<logic:equal name="page" property="hasPreviousPage" value="false">
上一页
</logic:equal>
<html:link page="/findUser.do?method=findAll&action=lastPage">尾页</html:link>
<br>
共有数据
<bean:write name="page" property="totalRows" />
条; 共分
<bean:write name="page" property="totalPages" />
页,当前是第
<bean:write name="page" property="currentPage" />
页
<br>
<a href="addUser.jsp">创建用户</a>
</body>
</html>