The whole process of custom pagination TAG and JSP pagination tag

Source: Internet
Author: User
Tags tld

The whole process of custom pagination TAG and JSP pagination tag

First we need to create the page. tld file under the WEB-INF/tld/directory

<?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;/*** pagination tag ** @ description * @ DATE 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 totalS Um) {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; // No display page} else if (pageSize> totalSum) {return TagSuppor T. 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 () ;}@ Override public 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 "<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 ("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 ("each page <input type = 'text' id = 'pagesize' style = 'width: 20px 'maxlength = '2' name = 'pagesize '"); if (pageSize> 0) {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

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


High-end custom tags: Question about custom JSP page tags?

Determine when SEX is displayed

Out. println (rs. getString ("sex"). equals ("B ")? "Male": "female ");

JSP paging label description

You can refer to the official document. This attribute is mainly used to expose the attribute to the outside. The default value is the request range. For example, Scope = "request" is displayed on it ". It is equivalent to setting properties in the request and can be referenced in the following jstl mark.
For example

"<Pg: pager url =" "items =" $ {pager. recordCount} "" The items attribute value here
In
"<Pg: index export =" items, pages ">" is exposed.
In
This value can be referenced in <span >$ {items} </span> data entries.

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.