JSP custom paging TAG, jsp paging 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; pri Vate 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 ;}@ 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. g EtOut (); 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 URLprintNo + = (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 URLprintNo + = (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: do not add a connection URLbuffer. 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: do not add a connection URLbuffer. 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
<% @ Tagliburi =Http://www.kevin.com/taglibs/page"Prefix ="Page"%>
Use the following tags to generate paging HTML code
<Page: htmlPagepageNo ="$ {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 pagination with custom tags for high scores
What are you doing to display the column name? The header is self-written. You can use an alias to change the column name of a database.