Index.java
import java.io.IOException;
import javax.servlet.jsp.JspException;
import javax.servlet.jsp.JspWriter; import javax.servlet.jsp.tagext.TagSupport; public class Index extends TagSupport { /** * 请求的URL */ private String serverUrl; /** * 当前页开始记录位置 */ private String start; /** * 数据每页个数 */ private String pageSize; /** * 总记录数 */ private String total; public void setServerUrl(String serverUrl) { this.serverUrl = serverUrl; } public void setStart(String start) { this.start = start; } public void setPageSize(String pageSize) { this.pageSize = pageSize; } public void setTotal(String total) { this.total = total; } @SuppressWarnings("static-access") @Override public int doStartTag() throws JspException { JspWriter out = pageContext.getOut(); StringBuffer sb = new StringBuffer(); sb.append("<span>总数:" + total + "</span> "); sb.append("<a href=" + serverUrl + "&pageSize=" + pageSize + "&start=1>首页</a>"); sb.append(" "); sb.append("<a href=" + serverUrl + "&pageSize=" + pageSize + "&start=" + getPreviousPageIndex() + ">上一页</a>"); sb.append(" "); sb.append("<a href=" + serverUrl + "&pageSize=" + pageSize + "&start=" + getNextPageIndex() + ">下一页</a>"); sb.append(" "); sb.append("<a href=" + serverUrl + "&pageSize=" + pageSize + "&start=" + getPageCount() + ">末页</a>"); sb.append(" "); sb.append("<span>" + start + " / " + getPageCount() + "</span>"); try { out.write(sb.toString()); } catch (IOException e) { e.printStackTrace(); } return super.SKIP_BODY; } private long getPageCount(){ long count = Long.parseLong(total); int size = Integer.parseInt(pageSize); long pageCount = count / size; if(count % size != 0 || count == 0){ pageCount++; } return pageCount; } private long getPreviousPageIndex(){ long index = Long.parseLong(start); index--; if(index < 1){ index = 1; } return index; } private long getNextPageIndex(){ long index = Long.parseLong(start); long pageCount = getPageCount(); index++; if(index > pageCount){ index = pageCount; } return index; } }
tld.xml自定义标签描述文件
--修改tag-class为真实包路径
<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE taglib PUBLIC "-//Sun Microsystems, Inc.//DTD JSP Tag Library 1.2//EN" "http://java.sun.com/dtd/web-jsptaglibrary_1_2.dtd"> <taglib> <tlib-version>1.0</tlib-version> <jsp-version>2.0</jsp-version> <short-name>page</short-name> <uri>/tags/page</uri> <tag> <name>index</name> <!-- 修改成完整限定名--> <tag-class>xxx.Index</tag-class> <body-content>JSP</body-content> <attribute> <name>serverUrl</name> <required>true</required> <rtexprvalue>false</rtexprvalue> </attribute> <attribute> <name>start</name> <required>true</required> <rtexprvalue>true</rtexprvalue> </attribute> <attribute> <name>pageSize</name> <required>true</required> <rtexprvalue>true</rtexprvalue> </attribute> <attribute> <name>total</name> <required>true</required> <rtexprvalue>true</rtexprvalue> </attribute> </tag> </taglib>
Jsp调用
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%> <%@ taglib prefix="page" uri="/tags/page"%> <html> <body> <% pageContext.setAttribute("start", 1); pageContext.setAttribute("pageSize", 10); pageContext.setAttribute("total", 1); %> <page:index serverUrl="?test=1" pageSize="${pageSize}" total="${total}" start="${start}"></page:index> </body> </html>