分页实现类,继承TagSupport,doStartTag方法内拼凑分页的html。
import javax.servlet.jsp.JspException;
import javax.servlet.jsp.JspWriter;
import javax.servlet.jsp.tagext.TagSupport;
public class FromPageTag extends TagSupport {
private static final long serialVersionUID = -3662095604913922414L;
private int pageNo;//页码
private int pageSize;//每页数量
private int totalRecord;//总记录数
@Override
public int doStartTag() throws JspException {
int tag = totalRecord % pageSize;
if (tag > 0) {
tag = 1;
}
int endPageNo = totalRecord / pageSize + tag;
StringBuilder sb = new StringBuilder(
"
// 前一页
sb.append("
if (pageNo > 1) {
sb.append("οnclick=\"_turnPage(").append(pageNo - 1).append(")\"");
}
sb.append(">上一页
");// 第一页
sb.append(addPageCell(1));
if (endPageNo > 1) {
sb.append(addPageCell(2));
}
if (endPageNo > 2) {
sb.append(addPageCell(3));
}
if (pageNo > 5) {
sb.append("…");
}
// 中间页码
for (int i = pageNo - 1; i <= pageNo + 1; i++) {
if (i <= 3) {
continue;
}
if (i >= endPageNo - 2) {
continue;
}
sb.append(addPageCell(i));
}
if (pageNo
sb.append("…");
}
//后面页码
if (endPageNo - 2 > 3) {
sb.append(addPageCell(endPageNo - 2));
}
if (endPageNo - 1 > 3) {
sb.append(addPageCell(endPageNo - 1));
}
if(endPageNo > 3) {
sb.append(addPageCell(endPageNo));
}
//最后一页
sb.append("
if(pageNo
sb.append("οnclick=\"_turnPage(").append(pageNo+1).append(")\"");;
}
sb.append(">下一页
try {
if (sb != null) {
JspWriter out = pageContext.getOut();
out.print(sb);
}
} catch (Exception e) {
throw new JspException("错误");
}
return super.doStartTag();
}
private String addPageCell(int number) {
StringBuilder sb = new StringBuilder();
sb.append("
if (pageNo != number) {
sb.append("\" οnclick=\"_turnPage(").append(number).append(")\"");
} else {
sb.append(" current\"");
}
sb.append(">").append(number).append("
");return sb.toString();
}
public int getTotalRecord() {
return totalRecord;
}
public void setTotalRecord(int totalRecord) {
this.totalRecord = totalRecord;
}
public int getPageNo() {
return pageNo;
}
public void setPageNo(int pageNo) {
this.pageNo = pageNo;
}
public int getPageSize() {
return pageSize;
}
public void setPageSize(int pageSize) {
this.pageSize = pageSize;
}
}
2. 在WEB-INF/tlds内增加 formPage.tld
taglib PUBLIC "-//Sun Microsystems, Inc.//DTD JSP Tag Library 1.2//EN"
"http://java.sun.com/dtd/web-jsptaglibrary_1_2.dtd">
1.0
1.2
mytag
formPage
com.common.FromPageTag
empty
pageNo
true
true
pageSize
true
true
totalRecord
true
true
3. web.xml中定义
/tld/page
/WEB-INF/tlds/formPage.tld
4. 使用
function _turnPage(pageNo) {
document.getElementById("pageNo").value=pageNo;
document.getElementById("pageSize").value=20;
document.getElementById("myForm").submit();
}