• <fieldset id="8imwq"><menu id="8imwq"></menu></fieldset>
  • <bdo id="8imwq"><input id="8imwq"></input></bdo>
    最新文章專題視頻專題問答1問答10問答100問答1000問答2000關鍵字專題1關鍵字專題50關鍵字專題500關鍵字專題1500TAG最新視頻文章推薦1 推薦3 推薦5 推薦7 推薦9 推薦11 推薦13 推薦15 推薦17 推薦19 推薦21 推薦23 推薦25 推薦27 推薦29 推薦31 推薦33 推薦35 推薦37視頻文章20視頻文章30視頻文章40視頻文章50視頻文章60 視頻文章70視頻文章80視頻文章90視頻文章100視頻文章120視頻文章140 視頻2關鍵字專題關鍵字專題tag2tag3文章專題文章專題2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章專題3
    問答文章1 問答文章501 問答文章1001 問答文章1501 問答文章2001 問答文章2501 問答文章3001 問答文章3501 問答文章4001 問答文章4501 問答文章5001 問答文章5501 問答文章6001 問答文章6501 問答文章7001 問答文章7501 問答文章8001 問答文章8501 問答文章9001 問答文章9501
    當前位置: 首頁 - 科技 - 知識百科 - 正文

    JSP自定義分頁標簽TAG全過程

    來源:懂視網 責編:小采 時間:2020-11-27 20:27:29
    文檔

    JSP自定義分頁標簽TAG全過程

    JSP自定義分頁標簽TAG全過程:首先我們需要在WEB-INF/tld/目錄下創建page.tld文件<xml version="1.0" encoding="ISO-8859-1"> <taglib> <tlib-version>1.0</tlib-version> <jsp-v
    推薦度:
    導讀JSP自定義分頁標簽TAG全過程:首先我們需要在WEB-INF/tld/目錄下創建page.tld文件<xml version="1.0" encoding="ISO-8859-1"> <taglib> <tlib-version>1.0</tlib-version> <jsp-v

    首先我們需要在WEB-INF/tld/目錄下創建page.tld文件

    <?xml version="1.0" encoding="ISO-8859-1"?> 
    <taglib> 
    <tlib-version>1.0</tlib-version> 
    <jsp-version>1.2</jsp-version> 
    <short-name>page</short-name> 
    <uri>http://www.kevin.com/taglibs/page</uri> 
    <tag> 
    <name>htmlPage</name> 
    <tag-class>com.lss.common.tag.PageTag</tag-class> 
    <body-content>JSP</body-content> 
    <description>htmlPage Tag</description> 
    <attribute> 
    <name>pageNo</name> 
    <required>false</required> 
    <rtexprvalue>true</rtexprvalue> 
    </attribute> 
    <attribute> 
    <name>pageSize</name> 
    <required>false</required> 
    <rtexprvalue>true</rtexprvalue> 
    </attribute> 
    <attribute> 
    <name>totalSum</name> 
    <required>true</required> 
    <rtexprvalue>true</rtexprvalue> 
    </attribute> 
    <attribute> 
    <name>url</name> 
    <required>true</required> 
    <rtexprvalue>true</rtexprvalue> 
    </attribute> 
    <attribute> 
    <name>showPage</name> 
    <required>false</required> 
    <rtexprvalue>true</rtexprvalue> 
    </attribute> 
    </tag> 
    </taglib>
    package com.lss.common.tag; 
     
    import java.io.IOException; 
     
    import javax.servlet.jsp.JspException; 
    import javax.servlet.jsp.JspWriter; 
    import javax.servlet.jsp.tagext.TagSupport; 
     
    import com.lss.common.page.HtmlPage; 
    import com.lss.common.page.Page; 
    import com.lss.common.page.VariablePage; 
     
    /** 
    * 分頁處理標簽 
    * 
    * @description 
    * @DATE 2012-3-11下午09:08:46 
    */
    public class PageTag extends TagSupport { 
    private int pageNo; 
    private int pageSize = 10; 
    private int totalSum; 
    private int showPage = 10; 
    private String url; 
     
    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; 
    } 
     
    public int getTotalSum() { 
    return totalSum; 
    } 
     
    public void setTotalSum(int totalSum) { 
    this.totalSum = totalSum; 
    } 
     
    public int getShowPage() { 
    return showPage; 
    } 
     
    public void setShowPage(int showPage) { 
    this.showPage = showPage; 
    } 
     
    public String getUrl() { 
    return url; 
    } 
     
    public void setUrl(String url) { 
    this.url = url; 
    } 
     
    @Override
    public int doEndTag() throws JspException { 
    if (pageSize == 0) { 
    return TagSupport.SKIP_PAGE;// 不顯示分頁 
    } else if (pageSize > totalSum) { 
    return TagSupport.SKIP_BODY;// 不顯示分頁 
    } 
    JspWriter out = pageContext.getOut(); 
    try { 
    if (url.indexOf(";jsessionid=") == -1) { 
    if (url.indexOf("?") == -1) { 
    url += ";jsessionid=" + pageContext.getSession().getId() + "?pageNo="; 
    } else { 
    url = url.replaceFirst("\\?", ";jsessionid=" + pageContext.getSession().getId() + "?"); 
    if (url.indexOf("pageNo=") == -1) { 
    url += "&pageNo="; 
    } 
    } 
    } 
    url = pageContext.getServletContext().getContextPath() + url; 
    VariablePage variablePage = new VariablePage(pageNo, totalSum, pageSize, url); 
    variablePage.setShowPageNum(showPage); 
    Page page = new HtmlPage(variablePage); 
    out.print(page.getFirstNo() + " " + page.getBackpageNum() + " " + page.pagination() + " " + page.getNextpageNum() + " " + page.getLastNo()); 
    } catch (IOException ex) { 
    ex.printStackTrace(); 
    } 
    return super.doEndTag(); 
    } 
     
    @Override
    public void release() { 
    url = null; 
    pageNo = 0; 
    totalSum = 0; 
    pageSize = 10; 
    super.release(); 
    } 
     
    private static final long serialVersionUID = -2642907859641024483L; 
    }
    /** 
    * HTML 分頁類 
    * 
    * @description 
    * @DATE 2012-3-11下午10:33:14 
    */
    public class HtmlPage extends Page { 
    public HtmlPage(VariablePage variablePage) { 
    super(variablePage); 
    } 
     
    public String pagination() { 
    String printNo = ""; 
    // 如果已分頁;并且頁數小于等于要顯示的頁數 
    if (variablePage.totalPage > 1 && variablePage.totalPage <= variablePage.showPageNum) { 
    return displayAll(); 
    // 如果分頁數:大于顯示的頁碼數 
    } else if (variablePage.totalPage > 1 && variablePage.totalPage > variablePage.showPageNum) { 
    if (variablePage.pageNo == 1) {// 當前頁等于第一頁 
    return fromFirstPagePrint(); 
    } else if (variablePage.pageNo == variablePage.totalPage) {// 當前頁等于最后一頁 
    return fromLastPagePrint(); 
    } else {// 如果當前頁:即不是首頁也不是尾頁 
    if (variablePage.showPageNum % 2 == 0) {// 可以平分頁碼 
    int print$No = variablePage.showPageNum / 2; 
    if (variablePage.pageNo >= print$No) { 
    int index$No = variablePage.pageNo - print$No; 
    if (variablePage.pageNo + print$No >= variablePage.totalPage) { 
    return fromLastPagePrint(); 
    } else { 
    if (index$No == 0) 
    index$No = 1; 
    for (int i = index$No; i < (variablePage.showPageNum + index$No); i++) { 
    if (i == variablePage.pageNo) {// 如果是當前頁:不添加連接URL 
    printNo += (i + variablePage.split); 
    } else { 
    printNo += (buildA(variablePage, i) + variablePage.split); 
    } 
    } 
    } 
    } else { 
    return fromFirstPagePrint(); 
    } 
    } else {// 打印頁數不是偶數時: 
    int print$No = variablePage.showPageNum / 2 + 1; 
    if (variablePage.pageNo >= print$No && variablePage.pageNo + print$No < variablePage.totalPage) { 
    int index$No = variablePage.pageNo - print$No + 1; 
    for (int i = index$No; i < variablePage.showPageNum + index$No; i++) { 
    if (i == variablePage.pageNo) {// 如果是當前頁:不添加連接URL 
    printNo += (i + variablePage.split); 
    } else { 
    printNo += (buildA(variablePage, i) + variablePage.split); 
    } 
    } 
    } else if (variablePage.pageNo <= print$No) {// 從第一頁開始 
    return fromFirstPagePrint(); 
    } else { 
    return fromLastPagePrint(); 
    } 
    } 
    } 
    return (printNo); 
    } else { 
    return "1"; 
    } 
    } 
     
    public String getBackpageNum() { 
    if (variablePage.pageNo <= 1) { 
    return buildSpan("上一頁", variablePage); 
    } else { 
    return buildA("上一頁", (variablePage.url + (variablePage.pageNo - 1))); 
    } 
    } 
     
    public String getNextpageNum() { 
    if (variablePage.pageNo >= variablePage.totalPage) { 
    return buildSpan("下一頁", variablePage); 
    } else { 
    return buildA("下一頁", variablePage.url + (variablePage.pageNo + 1)); 
    } 
    } 
     
    public String buildSpan(String text, VariablePage variablePage) { 
    return "<span style=\"color:gray;\">" + text + "</span>"; 
    } 
     
    public String buildA(String text, String url) { 
    return "<a href=\"" + url + "\">" + text + "</a>"; 
    } 
     
    public String buildA(VariablePage variablePage, int num) { 
    return ("<a href=\"" + variablePage.url + num + "\">" + num + "</a>"); 
    } 
    }
    public abstract class Page { 
    protected VariablePage variablePage; 
     
    public Page(VariablePage variablePage) { 
    this.variablePage = variablePage; 
    calculateTotalPage(); 
    } 
     
    public int getStartIndex() { 
    return (getValidpageNum() - 1) * variablePage.pageSize; 
    } 
     
    public String getBackpageNum() { 
    if (variablePage.pageNo <= 1) { 
    return buildSpan("上一頁", variablePage); 
    } else { 
    return buildA("上一頁", variablePage.getUrl() + (variablePage.pageNo - 1)); 
    } 
    } 
     
    public String getNextpageNum() { 
    if (variablePage.pageNo >= variablePage.totalPage) { 
    return buildSpan("下一頁", variablePage); 
    } else { 
    return buildA("下一頁", variablePage.getUrl() + (variablePage.pageNo + 1)); 
    } 
    } 
     
    /** 
    * 計算總頁數 
    */
    private void calculateTotalPage() { 
    if (variablePage.totalSum % variablePage.pageSize == 0) { 
    variablePage.totalPage = variablePage.totalSum / variablePage.pageSize; 
    } else { 
    variablePage.totalPage = variablePage.totalSum / variablePage.pageSize + 1; 
    } 
    if (variablePage.totalPage < variablePage.pageNo) { 
    variablePage.pageNo = variablePage.totalPage; 
    } else if (variablePage.pageNo < 1) { 
    variablePage.pageNo = 1; 
    } 
    } 
     
    protected String displayAll() { 
    StringBuilder sBuilder = new StringBuilder(10); 
    sBuilder.append(variablePage.split); 
    for (int i = 1; i <= variablePage.totalPage; i++) { 
    if (i == variablePage.pageNo) { 
    sBuilder.append(i + variablePage.split); 
    } else { 
    sBuilder.append(buildA(variablePage, i) + variablePage.split); 
    } 
    } 
    return sBuilder.toString(); 
    } 
     
    /** 
    * 抽象出分頁方法 
    * 
    * @return 
    */
    public abstract String pagination(); 
     
    /** 
    * 實現從第一頁開始打印 
    * 
    * @return 
    */
    protected final String fromFirstPagePrint() { 
    StringBuffer buffer = new StringBuffer(100); 
    for (int i = 1; i <= variablePage.showPageNum; i++) { 
    if (i == variablePage.pageNo) {// 如果是當前頁:不添加連接URL 
    buffer.append(i + variablePage.split); 
    } else { 
    buffer.append(buildA(variablePage, i) + variablePage.split); 
    } 
    } 
    return buffer.toString(); 
    } 
     
    /** 
    * 實現從最后一頁開始打印 
    * 
    * @return 
    */
    protected final String fromLastPagePrint() { 
    StringBuffer buffer = new StringBuffer(100); 
    int startPage = variablePage.totalPage - (variablePage.showPageNum - 1); 
    for (int i = startPage; i <= variablePage.totalPage; i++) { 
    if (i == variablePage.pageNo) {// 如果是當前頁:不添加連接URL 
    buffer.append(i + variablePage.split); 
    } else { 
    buffer.append(buildA(variablePage, i) + variablePage.split); 
    } 
    } 
    return buffer.toString(); 
    } 
     
    public String getFirstNo() { 
    if (isExistsPagination()) { 
    return buildA("首頁", variablePage.url + 1); 
    } else { 
    return buildSpan("首頁", variablePage); 
    } 
    } 
     
    /** 
    * 判斷是否存在分頁 
    * 
    * @return 
    */
    private boolean isExistsPagination() { 
    if (variablePage.totalSum > 1 && variablePage.totalPage > 1) { 
    return true; 
    } 
    return false; 
    } 
     
    public String getLastNo() { 
    if (isExistsPagination()) { 
    return buildA("尾頁", variablePage.url + variablePage.totalPage); 
    } else { 
    return buildSpan("尾頁", variablePage); 
    } 
    } 
     
    protected int getValidpageNum() { 
    if (variablePage.totalPage < variablePage.pageNo) { 
    return variablePage.pageNo = variablePage.totalPage; 
    } else if (variablePage.pageNo < 1) { 
    return variablePage.pageNo = 1; 
    } else { 
    return variablePage.pageNo; 
    } 
    } 
     
    public VariablePage getPageContant() { 
    return this.variablePage; 
    } 
     
    public abstract String buildSpan(String text, VariablePage variablePage); 
     
    public abstract String buildA(String text, String url); 
     
    public abstract String buildA(VariablePage variablePage, int num); 
     
    public String printModifyPageSize(int pageSize){ 
    StringBuilder builder=new StringBuilder(100); 
    builder.append("每頁<input type='text' id='pageSize' style='width:20px' maxlength='2' name='pageSize'"); 
    if(pageSize>0){ 
    builder.append(" value='"+pageSize+"' "); 
    } 
    builder.append("/>條"); 
    return builder.toString(); 
    } 
    }
    /** 
    * 分頁基礎變量 
    * 
    * @description 
    * @DATE 2012-3-11下午10:34:00 
    */
    public class SimpleVariable { 
    /** 
    * 顯示頁碼 
    */
    protected int showPageNum = 10; 
    /** 
    * 連接URL 
    */
    protected String url = null; 
    /** 
    * 當前頁碼 
    */
    protected int pageNo = 1; 
    /** 
    * 總頁碼 
    */
    protected int totalPage = 1; 
    /** 
    * 總條數 
    */
    protected int totalSum = 0; 
    /** 
    * 每頁顯示條數 
    */
    protected int pageSize = 10; 
     
    public String getUrl() { 
    return url; 
    } 
     
    public void setUrl(String url) { 
    this.url = url; 
    } 
     
    public int getTotalPage() { 
    return totalPage; 
    } 
     
    public void setTotalPage(int totalPage) { 
    this.totalPage = totalPage; 
    } 
     
    public int getTotalSum() { 
    return totalSum; 
    } 
     
    public void setTotalSum(int totalSum) { 
    this.totalSum = totalSum; 
    } 
     
    public int getPageSize() { 
    return pageSize; 
    } 
     
    public void setPageSize(int pageSize) { 
    this.pageSize = pageSize; 
    } 
     
    public int getShowPageNum() { 
    return showPageNum; 
    } 
     
    public void setShowPageNum(int showPageNum) { 
    this.showPageNum = showPageNum; 
    } 
     
    public int getPageNo() { 
    return pageNo; 
    } 
     
    public void setPageNo(int pageNo) { 
    this.pageNo = pageNo; 
    } 
    }
    /** 
    * 分頁變量 
    * 
    * @description 
    * @DATE 2012-3-11下午10:34:08 
    */
    public class VariablePage extends SimpleVariable { 
    protected String split = " "; 
    protected String style = "class='page'"; 
     
    public VariablePage(int pageNo, int totalSum, int pageSize, String url) { 
    pageNo = pageNo < 1 ? 1 : pageNo; 
    super.pageNo = pageNo; 
    this.totalSum = totalSum; 
    this.url = url; 
    this.pageSize = pageSize; 
    } 
     
    public VariablePage(int pageNum, int totalSum, String url) { 
    pageNum = pageNum < 1 ? 1 : pageNum; 
    super.pageNo = pageNum; 
    this.totalSum = totalSum; 
    this.url = url; 
    } 
     
    public String getSplit() { 
    return split; 
    } 
     
    public void setSplit(String split) { 
    this.split = split; 
    } 
     
    }

    #需要使用該分頁標簽的JSP 使用方法如下:

    JSP 頭部引入

    <%@taglib uri="http://www.kevin.com/taglibs/page" prefix="page" %>

    使用以下標簽生成分頁HTML代碼

    <page:htmlPage pageNo="${pageNo}" url="your_url" totalSum="${totalSum}" showPage="10" pageSize="12"/>

    更多JSP自定義分頁標簽TAG全過程相關文章請關注PHP中文網!

    聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com

    文檔

    JSP自定義分頁標簽TAG全過程

    JSP自定義分頁標簽TAG全過程:首先我們需要在WEB-INF/tld/目錄下創建page.tld文件<xml version="1.0" encoding="ISO-8859-1"> <taglib> <tlib-version>1.0</tlib-version> <jsp-v
    推薦度:
    標簽: 標簽 完整 分頁
    • 熱門焦點

    最新推薦

    猜你喜歡

    熱門推薦

    專題
    Top
    主站蜘蛛池模板: 日韩精品亚洲人成在线观看| 久久久久久亚洲Av无码精品专口| 亚洲国产精品成人午夜在线观看 | 亚洲国产精品自在在线观看| 四虎成人精品| 日本一区二区三区精品中文字幕| 无码人妻精品一区二区| 美女岳肉太深了使劲国产精品亚洲专一区二区三区 | 国产精品视频第一区二区三区| 色偷偷88欧美精品久久久| 久久精品国内一区二区三区| 精品人无码一区二区三区| 亚洲精品自产拍在线观看| 国产欧美一区二区精品性色99| 国产精品久久影院| 国产精品无码无需播放器| 熟妇无码乱子成人精品| 日韩精品一区二区午夜成人版 | 欧美成人精品一级高清片| 亚洲精品乱码久久久久66| 国产欧美一区二区精品性色99| 精品国产一区二区三区久久| 精品国产三级a∨在线欧美| 中日精品无码一本二本三本| 四虎影视永久在线精品| 精品视频一区二区三区四区五区| 99久久精品免费看国产| 在线成人精品国产区免费| 亚洲国产综合精品中文字幕| 午夜精品久久久久9999高清| 亚洲精品白浆高清久久久久久| 欧美精品hdvideosex4k| 国产精品色内内在线播放| 无码日韩精品一区二区人妻| 国产AV国片精品一区二区 | 中文字幕精品一区二区精品| 久久精品成人欧美大片| 精品亚洲欧美中文字幕在线看| 国产精品热久久无码av| 国产欧美日韩综合精品一区二区三区 | 亚洲?V乱码久久精品蜜桃 |