JSP自定义分页标签库

来源:互联网 发布:东方园林 知乎 编辑:程序博客网 时间:2024/05/02 04:52

目的:分页在查询页面几乎哪里都要用到,代码繁琐,本张介绍通过jsp自定义标签库实现分页技术,


使用步骤 

         1:导入自定义标签库    <%@ taglib prefix="cc" uri="/pagetag"%>

          2:使用 标签库             <cc:tagout  url="integeral/queryIntegral.html"pageindex="${pageindex}"  pagesize="10" totalsize="120"></cc:tagout>

     这样就可以了,哪里需要分页技术及这两句话,js和jsp代码都封装好,无需再进行逻辑处理,使用时要做的及时 在标签赋值就可以实现任何分页了


看效果

1:查看第6页后,上页,下页显示

2:点击上页后 ,没有上页了,从1页开始


3: 点击下页后


4店家第8页后  




实现步骤    

1定义tdl文件


<?xml version="1.0" encoding="UTF-8"?>
<taglib version="2.0" xmlns="http://java.sun.com/xml/ns/j2ee"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee web-jsptaglibrary_2_0.xsd">
    <tlib-version>1.0</tlib-version>
    <jsp-version>2.0</jsp-version>
    <short-name>cc</short-name>
    <uri>/pagetag</uri>
    <tag>
        <name>tagout</name>
        <tag-class>com.datong.rootravel.constants.PageTag</tag-class>
        <body-content>empty</body-content>
        <attribute>
            <name>url</name>
            <required>true</required>
            <rtexprvalue>true</rtexprvalue>
        </attribute>
        <attribute>
            <name>pageindex</name>
            <required>true</required>
            <rtexprvalue>true</rtexprvalue>
        </attribute>
        <attribute>
            <name>pagesize</name>
            <required>true</required>
            <rtexprvalue>true</rtexprvalue>
        </attribute>
        <attribute>
            <name>totalsize</name>
            <required>true</required>
            <rtexprvalue>true</rtexprvalue>
        </attribute>
    </tag>
</taglib>


2:写分页实现类   继承tagSupport类


package com.datong.rootravel.constants;

import javax.servlet.jsp.JspException;
import javax.servlet.jsp.JspWriter;
import javax.servlet.jsp.tagext.TagSupport;

/*
 * JSP 分页标签通用库
 *
 * auto zg
 * time 2014-10-13
 *
 * */

public class PageTag extends TagSupport {

    private String url;
    private int pageindex;
    private int pagesize;
    private int totalsize;

    // 在开始标签属性设置后调用,如果返回SKIP_BODY则忽略标签之中的内容,如果返回EVAL_BODY_INCLUDE则将标签体的内容进行输出
    @Override
    public int doStartTag() throws JspException {
        JspWriter out = null;
        Integer temp = 0;
        String style="style=\"color:red;\"";
        for (int t = pageindex; t > 0; t++) {
            if (t % 5 == 0) {
                temp = t;
                break;
            }
        }

        try {
            out = this.pageContext.getOut();
            if (url == null) {
                out.println("error: url is null!");
                return SKIP_BODY;
            }
            Integer pagecount = (Integer) (totalsize % pagesize == 0 ? totalsize
                    / pagesize
                    : totalsize / pagesize + 1);
            out.print("<div id=\"member_new_pages\">");
            out.print("<ul>");

            if (pagecount <= 5) { // 总页小于5 没有上页下页
                for (int i = 1; i <= pagecount; i++) {
                    out.print("<li ><a "+(i==pageindex?style:"")+" href=\"javascript:pageQuery('" + url + "?pageindex="
                            + i + "&pagesize=" + pagesize
                            + "&totalsize=" + totalsize + "')\">" + i
                            + "</a></li>");
                }
            } else {
                // 上页
                if (temp > 5) {
                    out.print("<li ><a href=\"javascript:pageQuery('" + url + "?pageindex="
                            + (temp - 9) + "&pagesize=" + pagesize
                            + "&totalsize=" + totalsize + "')\">上一页</a></li>");
                }

                if (temp> pagecount) { // 没有下一页了
                    for (int i = temp - 4; i <= pagecount; i++) {
                        out.print("<li ><a "+(i==pageindex?style:"")+" href=\"javascript:pageQuery('" + url + "?pageindex="
                                + i + "&pagesize=" + pagesize
                                + "&totalsize=" + totalsize + "')\">" + i
                                + "</a></li>");
                    }

                } else {
                    for (int i = temp - 4; i <= temp; i++) {
                        out.print("<li ><a "+(i==pageindex?style:"")+" href=\"javascript:pageQuery('" + url + "?pageindex="
                                + i + "&pagesize=" + pagesize
                                + "&totalsize=" + totalsize + "')\">" + i
                                + "</a></li>");
                        if (i == temp) {
                            out.print("<li><a href=\"javascript:pageQuery('" + url + "?pageindex="
                                    + (temp + 1) + "&pagesize=" + pagesize
                                    + "&totalsize=" + totalsize
                                    + "')\">下一页</a></li>");

                        }
                    }
                }
            }

            out.print("</ul></div>");

        } catch (Exception e) {
            e.printStackTrace();
        }

        return SKIP_BODY;

    }

    public int getTotalsize() {
        return totalsize;
    }

    public void setTotalsize(int totalsize) {
        this.totalsize = totalsize;
    }

    // 在结束标签之前调用,返回SKIP_PAGE跳过整个jsp页面后面的输出,返回EVAL_PAGE执行页面余下部分
    @Override
    public int doEndTag() throws JspException {
        return EVAL_PAGE;
    }

    // 生命周期结束时调用
    @Override
    public void release() {
        super.release();

    }

    public String getUrl() {
        return url;
    }

    public void setUrl(String url) {
        this.url = url;
    }

    public int getPageindex() {
        return pageindex;
    }

    public void setPageindex(int pageindex) {
        this.pageindex = pageindex;
    }

    public int getPagesize() {
        return pagesize;
    }

    public void setPagesize(int pagesize) {
        this.pagesize = pagesize;
    }

}


3:配置web.xml


<jsp-config>
    <taglib>
      <taglib-uri>/pagetag</taglib-uri>
      <taglib-location>/WEB-INF/pagetag.tld</taglib-location>
    </taglib>
  </jsp-config>








0 0
原创粉丝点击