假如数据分了有四页 可就是能显示第一页 第二页 最后一页 就不能显示倒数第二页<code>
   java中代码:package com.guoyuan.fenye;
import java.util.*;import com.guoyuan.form.DutyForm;public class Pager {
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;//有没有上一页
@SuppressWarnings("unused")
private List list;
/**
 * 用于初始化,
 * 也就是说,只要你传过来你一个list就可以分页
 * @param list
 */
public Pager(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 int getCurrentPage() {
return currentPage;
}
public void setCurrentPage(int currentPage) {
this.currentPage = currentPage;
}
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 int getPageEndRow() {
return pageEndRow;
}
public void setPageEndRow(int pageEndRow) {
this.pageEndRow = pageEndRow;
}
public int getPageRecorders() {
return pageRecorders;
}
public void setPageRecorders(int pageRecorders) {
this.pageRecorders = pageRecorders;
}
public int getPageStartRow() {
return pageStartRow;
}
public void setPageStartRow(int pageStartRow) {
this.pageStartRow = pageStartRow;
}
public String getTotalPages() {
return this.toString(totalPages);
}
public void setTotalPages(int totalPages) {
this.totalPages = totalPages;
}
public String getTotalRows() {
return this.toString(totalRows);
}
public void setTotalRows(int totalRows) {
this.totalRows = totalRows;
}
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>=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);
}
System.out.println("start"+pageStartRow);
System.out.println("end"+pageEndRow);
List templist=new ArrayList();
int j=0;
for(int i=pageStartRow;i<pageEndRow;i++)
{
DutyForm user=(DutyForm)list.get(i);
templist.add(j,user);
j++;
}
return templist;
}
   public String toString(int temp){

return Integer.toString(temp);
}}/***************************/
Action中转业代码:
public ActionForward ListDuty(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) {

DutyDao dao=new DutyImp();
List list=dao.ListDuty();
    Pager page=new Pager(list);
ActionForward forward=new ActionForward();


if (list != null)
{
String action=null;
    action=request.getParameter("action");
    if(action==null||action.equals("null"))
    {     
 
     page=new Pager(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 forward=mapping.findForward("dutylist");
}
/**********************/
jsp 中显示 上一页 下一页 代码:
<html:link page="/ListDuty.do?action=firstPage">首页</html:link>
    
        <logic:equal name="page" property="hasNextPage" value="true">
<html:link page="/ListDuty.do?action=nextPage">下一页</html:link>
     </logic:equal>
     <logic:equal name="page" property="hasPreviousPage" value="true">
<html:link page="/ListDuty.do?action=previousPage">上一页</html:link>
</logic:equal>

      <html:link page="/ListDuty.do?action=lastPage">末页</html:link>
 </Td>
</form>
  总共
  <bean:write name="page" property="totalRows"/>行,
   一共
<bean:write name="page" property="totalPages"/>页,
当前是第
<bean:write name="page" property="currentPage"/>页
</code>