主要简单说明一下页面的分页
package com.hello.web;
import java.util.ArrayList;
import java.util.List;
import com.hello.model.User;
public class Page {
//设置当前页
private int currentPage=1;
//总页数
private int totalPages=0;
//每页的记录数
private int pageRecorders=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;
}
}
public String getCurrentPage() {
return this.toString(currentPage);
}
private String toString(int temp) {
// TODO Auto-generated method stub
return Integer.toString(temp);
}
public void setCurrentPage(int currentPage) {
this.currentPage = currentPage;
}
public String getTotalPages() {
return this.toString(totalPages);
}
public void setTotalPages(int totalPages) {
this.totalPages = totalPages;
}
public int getPageRecorders() {
return pageRecorders;
}
public void setPageRecorders(int pageRecorders) {
this.pageRecorders = pageRecorders;
}
public String getTotalRows() {
return this.toString(totalRows);
}
public void setTotalRows(int totalRows) {
this.totalRows = totalRows;
}
public int getPageStartRow() {
return pageStartRow;
}
public void setPageStartRow(int pageStartRow) {
this.pageStartRow = pageStartRow;
}
public int getPageEndRow() {
return pageEndRow;
}
public void setPageEndRow(int pageEndRow) {
this.pageEndRow = pageEndRow;
}
public boolean isHasNextPage() {
return hasNextPage;
}
public void setHasNextPage(boolean hasNextPage) {
this.hasNextPage = hasNextPage;
}
public boolean isHasPreviousPage() {
return hasPreviousPage;
}
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;
hasPreviousPage=false;
hasNextPage=true;
}
if(currentPage >= totalPages){
currentPage=totalPages;
hasPreviousPage=true;
hasNextPage=false;
}
}
//取得页面list的信息
public List<User> getPageList(){
//判断是否是最后一页
if(currentPage*pageRecorders<totalRows){
pageEndRow = currentPage*pageRecorders;
pageStartRow = pageEndRow-pageRecorders;
}else{
pageEndRow = totalRows;
pageStartRow = pageRecorders*(totalPages-1);
}
List<User> testList = new ArrayList<User>();
int j=0;
for(int i=pageStartRow;i<pageEndRow;i++){
User user = (User) list.get(i);
testList.add(j, user);
j++;
}
return testList;
}
public void setList(List list) {
this.list = list;
}
}
页面的代码
<%@ page language="java" pageEncoding="gbk"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
<%@ 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-bean" prefix="bean" %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>LIST DATA</title>
</head>
<body>
<table border="1">
<Tr>
<td>
id
</td>
<td>
name
</td>
<td>
email
</td>
<td>
desn
</td>
<td>
edit
</td>
<td>
delete
</td>
</Tr>
<c:forEach items="${requestScope['users']}" var="user">
<tr>
<td>
<c:out value="${user.id}"></c:out>
</td>
<td>
<c:out value="${user.name}"></c:out>
</td>
<td>
<c:out value="${user.email}"></c:out>
</td>
<td>
<c:out value="${user.descn}"></c:out>
</td>
<td>
<a
href="<c:url value="/user.do?method=edit&id=${user.id}"/>">edit</a>
</td>
<td>
<a
href="<c:url value="/user.do?method=delete&id=${user.id}"/>">delete</a>
</td>
</tr>
</c:forEach>
</Table> <br>
<html:link page="/user.do?method=list&action=firstPage">首页</html:link>
<logic:equal name="page" property="hasPreviousPage" value="true">
<html:link page="/user.do?method=list&action=previousPage">上一页</html:link>
</logic:equal>
<logic:equal name="page" property="hasPreviousPage" value="false">
上一页
</logic:equal>
<logic:equal name="page" property="hasNextPage" value="true">
<html:link page="/user.do?method=list&action=nextPage">下一页</html:link>
</logic:equal>
<logic:equal name="page" property="hasNextPage" value="false">
下一页
</logic:equal>
<html:link page="/user.do?method=list&action=lastPage">尾页</html:link>
共有数据
<bean:write name="page" property="totalRows"/>
条;共分
<bean:write name="page" property="totalPages"/>
页;当前是第
<bean:write name="page" property="currentPage"/>
页
<br><button onclick="location.href='pages/edit.jsp'">add</button>
</body>
</html>
UserAction,设置页面
只有list方法,其他的方法在代码里
public class UserAction extends DispatchAction {
private Page page;
private UserService userService;
public void setUserService(UserService userService) {
this.userService = userService;
}
public ActionForward list(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response)
throws Exception {
List<User> list;
String action = null;
action = request.getParameter("action");
if (action == null || "action".equals(action)) {
list = userService.loadAll();
page = new Page(list);
list = page.getPageList();
request.setAttribute("users", list);
request.setAttribute("page", page);
} else {
if (action == "firstPage" || action.equals("firstPage")) {
page.getFirstPage();
list = page.getPageList();
request.setAttribute("users", list);
request.setAttribute("page", page);
}
if (action == "nextPage" || action.equals("nextPage")) {
page.getNextPage();
list = page.getPageList();
request.setAttribute("users", list);
request.setAttribute("page", page);
}
if (action == "previousPage" || action.equals("previousPage")) {
page.getPreviousPage();
list = page.getPageList();
request.setAttribute("users", list);
request.setAttribute("page", page);
}
if (action == "lastPage" || action.equals("lastPage")) {
page.getLastPage();
list = page.getPageList();
request.setAttribute("users", list);
request.setAttribute("page", page);
}
}
return mapping.findForward("list");
}
----------------------
}