JSP custom pagination TAG

Source: Internet
Author: User
Tags tld
This article mainly introduces the JSP custom paging TAG process, more practical, need friends can refer to the first we need to create a page. tld file under the WEB-INF/tld/directory

  
  
  
   1.0
   
  
   1.2
   
  
   page
   
  
   http://www.kevin.com/taglibs/page</uri> 
    
    
     htmlPage
     
    
     com.lss.common.tag.PageTag
     
    
     JSP
     
    
     htmlPage Tag
      
    
     pageNo
     
    
     false
     
    
     true
       
    
     pageSize
     
    
     false
     
    
     true
       
    
     totalSum
     
    
     true
     
    
     true
       
    
     url
     
    
     true
     
    
     true
       
    
     showPage
     
    
     false
     
    
     true
      
    
  
 
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;/*** pagination tag ** @ description * @ DATE 09:08:46 */public class PageTag extends TagSupport {private int p AgeNo; 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 totalSu M) {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 ;}@ Overridepublic int doEndTag () throws JspException {if (pageSize = 0) {return TagSupport. SKIP_PAGE; // No pagination} else if (pageSize> totalSum) {return TagSupport. SKIP_BODY; // No pagination} 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 () ;}@ Overridepublic void release () {url = null; pageNo = 0; totalSum = 0; pageSize = 10; super. release ();} private static final long serialVersionUID =-2642907859641024483L ;}
/*** HTML paging class ** @ 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 paginated; and the number of pages is smaller than or equal to the number of pages to be displayed if (variablePage. totalPage> 1 & variablePage. totalPage <= variablePage. showPageNum) {return displayAll (); // if the number of pages is greater than the number of displayed pages} else if (variablePage. totalPage> 1 & variablePage. totalPage> variablePage. showPageNum) {if (variablePage. pageNo = 1) {// the current page is equal to the return fromFirstPagePrint ();} else if (variablePage. pageNo = variablePage. totalPage) {// the current page is equal to the return fromLastPagePrint ();} else {// if the current page is neither the home page nor the last page if (variablePage. showPageNum % 2 = 0) {// the page number can be evenly divided into 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) {// if it is the current page: do not add the connection URL printNo + = (I + variablePage. split);} else {printNo + = (buildA (variablePage, I) + variablePage. split) ;}}}else {return fromFirstPagePrint () ;}}else {// when the number of printed pages is not an even number: 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) {// if it is the current page: do not add the connection 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 ("Previous Page", variablePage);} else {return buildA ("Previous Page", (variablePage. url + (variablePage. pageNo-1);} public String getNextpageNum () {if (variablePage. pageNo> = variablePage. totalPage) {return buildSpan ("next page", variablePage);} else {return buildA ("next page", variablePage. url + (variablePage. pageNo + 1) ;}} public String buildSpan (String text, VariablePage variablePage) {return "" + text + "" ;}public String buildA (String text, String url) {return "" + text + "";} public String buildA (VariablePage variablePage, int num) {return ("" + num + "");}}
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 ("Previous Page", variablePage);} else {return buildA ("Previous Page", variablePage. getUrl () + (variablePage. pageNo-1);} public String getNextpageNum () {if (variablePage. pageNo> = variablePage. totalPage) {return buildSpan ("next page", variablePage);} else {return buildA ("next page", variablePage. getUrl () + (variablePage. pageNo + 1) ;}}/*** total number of calculated pages */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 ();}/*** abstract paging method ** @ return */public abstract String pagination (); /*** print ** @ return */protected final String fromFirstPagePrint () {StringBuffer buffer = new StringBuffer (100); for (int I = 1; I <= variablePage. showPageNum; I ++) {if (I = variablePage. pageNo) {// if it is the current page: No URL buffer is added. append (I + variablePage. split);} else {buffer. append (buildA (variablePage, I) + variablePage. split) ;}} return buffer. toString ();}/*** print ** @ 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) {// if it is the current page: No URL buffer is added. append (I + variablePage. split);} else {buffer. append (buildA (variablePage, I) + variablePage. split) ;}} return buffer. toString ();} public String getFirstNo () {if (isExistsPagination () {return buildA ("Homepage", variablePage. url + 1);} else {return buildSpan ("Homepage", variablePage);}/*** determine whether a page exists ** @ return */private boolean isExistsPagination () {if (variablePage. totalSum> 1 & variablePage. totalPage> 1) {return true;} return false;} public String getLastNo () {if (isExistsPagination () {return buildA ("last page", variablePage. url + variablePage. totalPage);} else {return buildSpan ("last page", 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 ("per page0) {builder. append ("value = '" + pageSize + "'");} builder. append ("/> entries"); return builder. toString ();}}
/*** Basic paging variable ** @ description * @ DATE 2012-3-11 10:34:00 */public class SimpleVariable {/*** display page number */protected int showPageNum = 10; /*** connection URL */protected String url = null;/*** current page number */protected int pageNo = 1; /*** total page number */protected int totalPage = 1;/*** total page number */protected int totalSum = 0; /*** number of entries per page */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 ;}}
/*** Paging variable ** @ 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 ;}}

# Use JSP with this tab as follows:

JSP header Introduction

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

Use the following tags to generate paging HTML code

 


For more articles about the full process of JSP custom pagination TAG, refer to PHP Chinese network!

Related Article

Contact Us

The content source of this page is from Internet, which doesn't represent Alibaba Cloud's opinion; products and services mentioned on that page don't have any relationship with Alibaba Cloud. If the content of the page makes you feel confusing, please write us an email, we will handle the problem within 5 days after receiving your email.

If you find any instances of plagiarism from the community, please send an email to: info-contact@alibabacloud.com and provide relevant evidence. A staff member will contact you within 5 working days.

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.