JAVA:自定义标签-分页-索引

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> &nbsp;&nbsp;"); sb.append("<a href=" + serverUrl + "&pageSize=" + pageSize + "&start=1>首页</a>"); sb.append("&nbsp;&nbsp;&nbsp;&nbsp;"); sb.append("<a href=" + serverUrl + "&pageSize=" + pageSize + "&start=" + getPreviousPageIndex() + ">上一页</a>"); sb.append("&nbsp;&nbsp;&nbsp;&nbsp;"); sb.append("<a href=" + serverUrl + "&pageSize=" + pageSize + "&start=" + getNextPageIndex() + ">下一页</a>"); sb.append("&nbsp;&nbsp;&nbsp;&nbsp;"); sb.append("<a href=" + serverUrl + "&pageSize=" + pageSize + "&start=" + getPageCount() + ">末页</a>"); sb.append("&nbsp;&nbsp;&nbsp;&nbsp;"); 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>

猜你喜欢

转载自www.cnblogs.com/leonlipfsj/p/12313642.html