package prj13_1;
import java.util.ArrayList;
//负责传入一个大的集合,根据页号返回所需的数据
/*
* 页数=
记录条数%每页条数==0 记录条数/每页条数
否则 记录条数/每页条数+1
第N页显示第几条记录(记录从0开始算)? (N-1)*每页条数=<序号< N*每页条数
* */
public class PageController {
private ArrayList bigList;//大的集合,外界传入
private int currentPageIndex=1;//当前页号,默认为1,外界传入
private int countPerpage=5;//每页条数,可以设定
private ArrayList smallList;//小的集合,返回
private int pageCount;//页数
private int recordCount;//记录条数
private int prePageIndex;//上一页序号
private int nextPageIndex;//下一页序号
private boolean firstPage;//是否第一页
private boolean lastPage;//是否最后一页
public void setCurrentPageIndex(int currentPageIndex) {//每当页数改变,都会调用这个函数,调用次数最多,筛选代码写在这里
this.currentPageIndex = currentPageIndex;
//上一页,下一页确定
prePageIndex=currentPageIndex-1;
nextPageIndex=currentPageIndex+1;
//是否第一页,最后一页
if(currentPageIndex==1)
{
firstPage=true;
}
else
{
firstPage=false;
}
if(currentPageIndex==pageCount)
{
lastPage=true;
}
else
{
lastPage=false;
}
//筛选工作
smallList=new ArrayList();
for(int i=(currentPageIndex-1)*countPerpage;i<currentPageIndex*countPerpage&& i<recordCount;i++){
smallList.add(bigList.get(i));
}
}
public int getCurrentPageIndex() {
return currentPageIndex;
}
public ArrayList getBigList() {
return bigList;
}
public void setBigList(ArrayList bigList) {
this.bigList = bigList;
//计算条数
this.recordCount=bigList.size();
//计算页数
if(this.recordCount%countPerpage==0)
{
pageCount=this.recordCount/countPerpage;
}
else
{
pageCount=this.recordCount/countPerpage+1;
}
}
public int getCountPerpage() {
return countPerpage;
}
public void setCountPerpage(int countPerpage) {
this.countPerpage = countPerpage;
}
public ArrayList getSmallList() {
return smallList;
}
public void setSmallList(ArrayList smallList) {
this.smallList = smallList;
}
public int getPageCount() {
return pageCount;
}
public void setPageCount(int pageCount) {
this.pageCount = pageCount;
}
public int getRecordCount() {
return recordCount;
}
public void setRecordCount(int recordCount) {
this.recordCount = recordCount;
}
public int getPrePageIndex() {
return prePageIndex;
}
public void setPrePageIndex(int prePageIndex) {
this.prePageIndex = prePageIndex;
}
public int getNextPageIndex() {
return nextPageIndex;
}
public void setNextPageIndex(int nextPageIndex) {
this.nextPageIndex = nextPageIndex;
}
public boolean isFirstPage() {
return firstPage;
}
public void setFirstPage(boolean firstPage) {
this.firstPage = firstPage;
}
public boolean isLastPage() {
return lastPage;
}
public void setLastPage(boolean lastPage) {
this.lastPage = lastPage;
}
}
/*
* Generated by MyEclipse Struts
* Template path: templates/java/JavaClass.vtl
*/
package prj13_1.action;
import java.util.ArrayList;
import po.*;
import prj13_1.PageController;
import dao.*;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.struts.action.Action;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;
public class QueryAction extends Action {
public ActionForward execute(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response) {
String str=request.getParameter("pageIndex");
if(str==null){
str="1";
}
int currentPageIndex=Integer.parseInt(str);
//查询.跳转
studentDao dao=new studentDao();
PageController pc=(PageController)request.getAttribute("pc");
if(pc==null)
{
pc=new PageController();
ArrayList list=dao.QueryAllStu();
pc.setBigList(list);
request.setAttribute("pc", pc);
}
pc.setCurrentPageIndex(currentPageIndex);
return new ActionForward("/display.jsp");
}
}
<%@ page language="java" import="java.util.*" pageEncoding="gb2312"%>
<%@ page import="dao.*,po.*" %>
<%@page import="java.util.ArrayList"%>
<%@ 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" %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title></title>
</head>
<body>
显示结果
<table border="1" bgcolor="#804040" align="center">
<tr>
<td>ID</td>
<td>用户名</td>
<td>密码</td>
<td>电话</td>
<td>地址</td>
<td>日期</td>
</tr>
<logic:iterate id="info" name="pc" property="smallList">
<tr>
<td><bean:write name="info" property="id"/></td>
<td><bean:write name="info" property="username"/></td>
<td><bean:write name="info" property="password"/></td>
<td><bean:write name="info" property="phone"/></td>
<td><bean:write name="info" property="addr"/></td>
<td><bean:write name="info" property="rdate"/></td>
</tr>
</logic:iterate>
</table>
<html:link action="/query.do?pageIndex=1">首页</html:link>
<logic:equal name="pc" property="firstPage" value="false" >
<html:link action="/query.do" paramId="pageIndex" paramName="pc" paramProperty="prePageIndex">上一页</html:link>
</logic:equal>
<logic:equal name="pc" property="lastPage" value="false">
<html:link action="/query.do" paramId="pageIndex" paramName="pc" paramProperty="nextPageIndex">下一页</html:link>
</logic:equal>
<html:link action="/query.do" paramId="pageIndex" paramName="pc" paramProperty="pageCount">尾页</html:link>
</body>
</html>