以下是本人在项目中实现的Web分页标签: package com.sunfairs.tags; import java.io.IOException; import javax.servlet.jsp.JspException; import javax.servlet.jsp.tagext.BodyTagSupport; public class PageTag extends BodyTagSupport { private int rowCount;//总行数 private int pageSize;//每页显示行数 private int currPage;/当前页码 private String url;//链接地址 public int getCurrPage() { return currPage; } public void setCurrPage(int currPage) { this.currPage = currPage; } public int getPageSize() { return pageSize; } public void setPageSize(int pageSize) { this.pageSize = pageSize; } public int getRowCount() { return rowCount; } public void setRowCount(int rowCount) { this.rowCount = rowCount; } public String getUrl() { return url; } public void setUrl(String url) { this.url = url; } @Override public int doStartTag() throws JspException { int maxPage = 0; int prePage = 1; int nextPage = 1; int preNum = 0; int currNum = 0; int showPage = 0; if(rowCount%pageSize==0) maxPage = rowCount/pageSize; else maxPage = rowCount/pageSize+1; prePage = currPage - 1; nextPage = currPage + 1; preNum = pageSize * (currPage-1)+1; currNum = pageSize * currPage; showPage = 10; StringBuffer pageStr = new StringBuffer(); pageStr.append("<span class=/"pagebanner/">/n/t/t"+rowCount+" items found, displaying "+preNum+" to "+currNum+"./n/t</span>/n/t<span class=/"pagelinks/">/n"); if(currPage==1) pageStr.append("/t/t[First/Prev]"); else pageStr.append("/t/t[<a href="/" mce_href="/"""+url+"page=1/">First</a>/<a href="/" mce_href="/"""+url+"page="+prePage+"/">Prev</a>]"); if(maxPage<=10){ for(int i=1;i<=maxPage;i++){ if(currPage == i) pageStr.append("<strong>"+i+"</strong>"); else pageStr.append("<a href="/" mce_href="/"""+url+"page="+i+"/">"+i+"</a>"); if(i<maxPage) pageStr.append(","); } } else{ if(currPage<10){ for(int i=1;i<=showPage;i++){ if(currPage == i) pageStr.append("<strong>"+i+"</strong>"); else pageStr.append("<a href="/" mce_href="/"""+url+"page="+i+"/">"+i+"</a>"); if(i<maxPage) pageStr.append(","); } } else{ for(int i=currPage-8;i<=currPage+1;i++){ if(i<=maxPage){ if(currPage == i) pageStr.append("<strong>"+i+"</strong>"); else pageStr.append("<a href="/" mce_href="/"""+url+"page="+i+"/">"+i+"</a>"); if(i<maxPage) pageStr.append(","); } } } } if(currPage==maxPage) pageStr.append("[Next/Last]"); else pageStr.append("[<a href="/" mce_href="/"""+url+"page="+nextPage+"/">Next</a>/<a href="/" mce_href="/"""+url+"page="+maxPage+"/">Last</a>]"); pageStr.append("/n/t</span>"); pageStr.append("/n/t<span class=/"pagebanner/">/n/t/t"+maxPage+" pages, "+pageSize+" items every page./n/t</span>"); try { pageContext.getOut().print(pageStr.toString()); } catch (IOException e) { e.printStackTrace(); } return SKIP_BODY; } }