⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 paginator.java

📁 云网论坛CWBBS 源码,内容丰富,学习,参考,教学的好资料,具体见内说明,
💻 JAVA
字号:
package cn.js.fan.db;

import javax.servlet.http.*;
import cn.js.fan.util.*;
import cn.js.fan.web.Global;
import cn.js.fan.web.SkinUtil;
import com.cloudwebsoft.framework.util.LogUtil;

public class Paginator {
    public long total = 0;
    public int pageSize = 20;
    public int curPage = 1;
    public int totalpages = 0;

    public int pagenumbegin = 0; // 当前页码显示的开始页码
    public int pagenumend = 0; // 在页面中显示的结束页码
    public int numperpage = 10; // 每页显示的页码数
    public int totalpagenumblock = 0; // 共有多少个页码块,如[pagenumbegin,2,3,4,5,...,pagenumend]
    public int curpagenumblock = 0; // 当前处在第多少个页码块,如[pagenumbegin,12...,pagenumend]

    public Paginator(HttpServletRequest request) {
        getCPage(request);
    }

    public Paginator(HttpServletRequest request, long total, int pagesize) {
        getCPage(request);
        init(total, pagesize);
    }

    public void init(long total, int pagesize) {
        this.total = total;
        this.pageSize = pagesize;
        totalpages = (int) Math.ceil((double) total / pagesize);
        if (curPage > totalpages)
            curPage = totalpages;
        if (curPage <= 0)
            curPage = 1;
    }

    public long getTotal() {
        return total;
    }

    public void setTotal(long t) {
        this.total = t;
    }

    public int getPageSize() {
        return pageSize;
    }

    public void setPageSize(int p) {
        this.pageSize = p;
    }

    public int getTotalPages() {
        return totalpages;
    }

    public int getCurrentPage() {
        return curPage;
    }

    public int getCurPage() {
        return curPage;
    }

    public int getCPage(HttpServletRequest request) {
        String strcurpage = StrUtil.getNullStr(request.getParameter("CPages"));
        if (!StrUtil.isNumeric(strcurpage)) {
            curPage = 1;
        } else {
            try {
                curPage = Integer.parseInt(strcurpage);
                // 防止攻击
                if (curPage <= 0)
                    curPage = 1;
            }
            catch (Exception e) {
                LogUtil.getLog(getClass()).error("getCPage:" + StrUtil.trace(e));
                curPage = 1;
            }
        }
        return curPage;
    }

    // 用当前页作为参数来初始化页码pagenumblock中用到的数据
    public void intpagenum() {
        if (totalpages == 0) {
            pagenumbegin = 0;
            pagenumend = 0;
            return;
        }

        // 总的页码块数
        totalpagenumblock = (int) totalpages / numperpage;
        if (totalpages % numperpage > 0)
            totalpagenumblock += 1;
        //if (TPages % numperpage > 0)
        //  totalpagenumblock += 1;

        curpagenumblock = (int) (curPage / numperpage);
        if (curPage % numperpage > 0)
            curpagenumblock += 1;
        pagenumbegin = (curpagenumblock - 1) * numperpage + 1;
        if (pagenumbegin == 0)
            pagenumbegin = 1;
        if (totalpagenumblock == curpagenumblock)
            pagenumend = totalpages; //当最后一个页码块即为当前块时,使结束页码为总页码,避免当不足numperpage时会使得超出
        else
            pagenumend = pagenumbegin + numperpage - 1;
    }

    public String getPageBlock(HttpServletRequest request, String url) {
        return getPageBlock(request, url, "");
    }

    public String getPageStatics(HttpServletRequest request) {
        String page = StrUtil.format(SkinUtil.LoadString(request,
                "page_statics"), new Object[] {"" + getTotal(),
                                     "" + getPageSize(), "" + getCurrentPage(),
                                     "" + getCurrentPage(), "" + getTotalPages()});
        return page;
    }

    public String LoadString(HttpServletRequest request, String key) {
        return SkinUtil.LoadString(request, "res.cn.js.fan.db.Paginator", key);
    }

    public String getPageBlock(HttpServletRequest request, String url,
                               String pre) {
        intpagenum();

        if (pagenumbegin == 0)
            return "";

        StringBuffer sb = new StringBuffer(200);
        if (curpagenumblock > 1) { //如果显示的是第二个页码段的页面
            sb.append("<a title='" + LoadString(request, "previous") +
                      "' href=\"" + url + "&CPages=" + (pagenumbegin - 1) +
                      "\">" + "<<" + "</a> ");
        }
        for (int i = pagenumbegin; i <= pagenumend; i++) {
            if (i == curPage)
                sb.append(i + " ");
            else
                sb.append("[<a href=\"" + url + "&CPages=" + i + "\">" + i +
                          "</a>] ");
        }
        if (curpagenumblock < totalpagenumblock) { //如果显示的是第二个页码段的页面
            sb.append("<a title='" + LoadString(request, "after") + "' href=\"" +
                      url + "&CPages=" + (pagenumend + 1) + "\">" + ">>" +
                      "</a>");
        }
        sb.append("<script language='javascript'>\n");
        sb.append("<!--\n");
        sb.append("function " + pre + "selpage_onchange()\n");
        sb.append("{\n");
        sb.append("location.href=\"" + url + "&CPages=\"+" + pre +
                  "selpage.value\n");
        sb.append("}\n");
        sb.append("//-->\n");
        sb.append("</script>\n");
        sb.append("&nbsp;&nbsp;" + LoadString(request, "turnto") +
                  "&nbsp;<select name=" + pre + "selpage onchange='" + pre +
                  "selpage_onchange()'>");
        for (int k = 1; k <= totalpages; k++) {
            sb.append("<option value=" + k + ">" + k + "</option>");
        }
        sb.append("</select>&nbsp;" + LoadString(request, "page"));
        sb.append("<script language='javascript'>\n");
        sb.append("<!--\n");
        sb.append(pre + "selpage.value=" + curPage + "\n");
        sb.append("//-->\n");
        sb.append("</script>\n");
        return sb.toString();
    }

    public String getCurPageBlock(String url) {
        return getCurPageBlock(url, "");
    }

    /**
     *
     * @param url String
     * @param pre String 前缀,防止页面中多次调用本函数时导致HTML对象有重名
     * @return String
     */
    public String getCurPageBlock(String url, String pre) {
        intpagenum();

        if (pagenumbegin == 0)
            return "";

        StringBuffer sb = new StringBuffer(200);
        if (curpagenumblock > 1) { //如果显示的是第二个页码段的页面
            sb.append("<a title='往前' href=\"" + url + "&CPages=" +
                      (pagenumbegin - 1) + "\">" + "<<" + "</a> ");
        }

        for (int i = pagenumbegin; i <= pagenumend; i++) {
            if (i == curPage)
                sb.append(i + " ");
            else
                sb.append("[<a href=\"" + url + "&CPages=" + i + "\">" + i +
                          "</a>] ");
        }

        if (curpagenumblock < totalpagenumblock) { //如果显示的是第二个页码段的页面
            sb.append("<a title='往后' href=\"" + url + "&CPages=" +
                      (pagenumend + 1) + "\">" + ">>" + "</a>");
        }

        sb.append("<input name=\"pageNum\" type=\"text\" size=\"2\" style=\"width:30px\" onKeyDown=\"" +
                  pre + "page_presskey(this.value)\">");
        sb.append("<input type=\"button\" name=\"GO\" value=\"GO\" onClick=\"" +
                  pre + "changepage(pageNum.value)\">");

        sb.append("<script language='javascript'>\n");
        sb.append("<!--\n");
        sb.append("function " + pre + "changepage(num)\n");
        sb.append("{\n");
        sb.append("window.location.href=\"" + url + "&CPages=\"+num;\n");
        sb.append("}\n");
        sb.append("//-->\n");
        sb.append("function page_presskey(num) {\n");
        sb.append("if (window.event.keyCode==13) {\n");
        sb.append("changepage(num)\n");
        sb.append("}\n");
        sb.append("}\n");
        sb.append("</script>\n");
        return sb.toString();
    }

    public String getCurPageBlock(HttpServletRequest request, String url) {
        return getCurPageBlock(request, url, "");
    }

    /**
     *
     * @param url String
     * @param pe String
     * @return String
     */
    public String getCurPageBlock(HttpServletRequest request, String url,
                                  String pre) {
        intpagenum();

        if (pagenumbegin == 0)
            return "";

        String rootpath = Global.getRootPath();
        StringBuffer sb = new StringBuffer(200);
        sb.append(
                "<table border=\"0\" cellSpacing=\"1\" cellPadding=\"0\" class='table_page'>");
        sb.append("<tr align=middle>");
        sb.append("<td class=table_page_title title='" +
                  LoadString(request, "topic_count") + "'>" + total + "</td>");
        sb.append("<td class=table_page_title title='" +
                  LoadString(request, "page_count") + "'>" + pageSize + "</td>");
        sb.append("<td class=table_page_title >" + curPage + "/" + totalpages +
                  LoadString(request, "page") + "</td>");
        if (curpagenumblock > 1)
            sb.append("<td class=table_page_list><a href=\"" + url +
                      "&CPages=1\"><img src=\"" + rootpath +
                      "/images/first.gif\" alt=" +
                      LoadString(request, "page_first") +
                      " width=\"9\" height=\"8\" border=\"0\"></a></td>");
        if (curpagenumblock > 1) { // 如果显示的是第二个页码段的页面
            sb.append("<td><a href=\"" + url + "&CPages=" + (pagenumbegin - 1) +
                      "\"><img src=\"" + rootpath +
                      "/images/previous.gif\" alt=" +
                      LoadString(request, "previous") +
                      " width=\"8\" height=\"8\" border=\"0\"></a></td>");
        }

        for (int i = pagenumbegin; i <= pagenumend; i++) {
            if (i == curPage)
                sb.append("<td class=table_page_cur>" + i + "</td>");
            else
                sb.append("<td class=table_page_list><a href=\"" + url +
                          "&CPages=" + i + "\">" + i + "</a></td>");
        }

        if (curpagenumblock < totalpagenumblock) { // 如果显示的是第二个页码段的页面
            sb.append("<td class=table_page_list><a href=\"" + url + "&CPages=" +
                      (pagenumend + 1) + "\"><img src=\"" + rootpath +
                      "/images/next.gif\" alt='" + LoadString(request, "after") +
                      "' width=\"8\" height=\"8\" border=\"0\"></a></td>");
        }
        if (curpagenumblock < totalpagenumblock)
            sb.append("<td class=table_page_list><a href=\"" + url + "&CPages=" +
                      totalpages + "\"><img src=\"" + rootpath +
                      "/images/last.gif\" alt='" +
                      LoadString(request, "page_last") +
                      "' width=\"9\" height=\"8\" border=0></a></td>");
        sb.append("<td class=table_page_list><input name=\"pageNum" + pre + "\" type=\"text\" size=\"2\" style=\"width:30px\" onKeyDown=\"" +
                  pre + "page_presskey(this.value)\"></td>");
        sb.append("<td class=table_page_list><input type=\"button\" name=\"GO\" value=\"GO\" onClick=\"" +
                  pre + "changepage(pageNum" + pre + ".value)\"></td>");
        sb.append("</tr>");
        sb.append("</table>");

        sb.append("<script language='javascript'>\n");
        sb.append("<!--\n");
        sb.append("function " + pre + "changepage(num)\n");
        sb.append("{\n");
        sb.append("window.location.href=\"" + url + "&CPages=\"+num;\n");
        sb.append("}\n");
        sb.append("//-->\n");
        sb.append("function page_presskey(num) {\n");
        sb.append("if (window.event.keyCode==13) {\n");
        sb.append("changepage(num)\n");
        sb.append("}\n");
        sb.append("}\n");
        sb.append("</script>\n");
        return sb.toString();
    }
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -