display table 外部分页 支持当前排序
需求:根据当前面码数currentPage,每页记录数pageSize,数据总记录数totalCount,进行分页,算出,每页的数据开始索引startIndex和结束索引endIndex
web.xml
This is the description of my J2EE component
This is the display name of my J2EE component
CustomerServlet
com.tht.customer.servlet.CustomerServlet
CustomerServlet
/servlet/CustomerServlet
http://jsptags.com/tags/navigation/pager
/WEB-INF/pager-taglib.tld
result.jsp
当设定 partialList="true"时,自动进行当前页排序
<%&#64; taglib prefix&#61;"display" uri&#61;"http://displaytag.sf.net" %>
/css/print.css" type&#61;"text/css" media&#61;"print" />
/css/screen.css" type&#61;"text/css" media&#61;"screen,print" />
class&#61;"its" id&#61;"item" name&#61;"list" defaultsort&#61;"1" pagesize&#61;"${pageSize}" partialList&#61;"true" size&#61;"resultSize" requestURI&#61;"/displaypagination/servlet/CustomerServlet">
Servlet部分
1、页面请求&#xff0c;会把请求的页码数传给后台&#xff1a;
//得到当前页的字符串
String strP&#61;request.getParameter((new ParamEncoder("item").encodeParameterName(TableTagParameters.PARAMETER_PAGE)));
//请求的需要显示的页码数
int currentPage&#61;0;
if(strP&#61;&#61;null){
currentPage&#61;1;
}else{
currentPage&#61;Integer.parseInt(strP);
}
//当前页
System.out.println("currentPage:"&#43;currentPage);
2、通过后台方式得到数据库中的总记录数:
//总记录数
int totalCount&#61;new BaseDao().getTotalCount("select count(*) from ct_cuinfo");
3、算出开始索引和结束索引
提供参数值 int currerntPage,int pageSize,int totalCount
/**
* oracle分页工具类
* &#64;author liuwen
* 传参进来 int currerntPage,int pageSize,int totalCount
*
*/
public class PageTools {
int resultSize&#61;100; //总页数
int pageSize&#61;5;// 每页显示的记录数
int totalCount&#61;0; //总记录数
int currerntPage&#61;0;//当前页码数
int startIndex&#61;0;//开始记录索引
int endIndex&#61;0; //结束记录索引
/**
*
* &#64;param currerntPage 当前页码数
* &#64;param pageSize 每页显示的记录条数
* &#64;param totalCount 总记录数
*/
public PageTools(int currerntPage,int pageSize,int totalCount){
this.currerntPage&#61;currerntPage;
this.pageSize&#61;pageSize;
this.totalCount&#61;totalCount;
calResultSize(); //计算总页数 计算优先级别1
calStartIndexAndEndIndex(); //计算开始的rownum和结束的rownum 计算优先级别2
}
/**
* 计算总页数 计算优先级别1
*/
public void calResultSize(){
int modTotal&#61;this.totalCount%pageSize;
if(modTotal&#61;&#61;0){
resultSize&#61;this.totalCount/pageSize;
}else{
resultSize&#61;this.totalCount/pageSize&#43;1;
}
}
/**
* 计算开始的rownum和结束的rownum 计算优先级别2
*/
public void calStartIndexAndEndIndex(){
if(currerntPage&#61;&#61;1){
startIndex&#61;0;
}else{
startIndex&#61;(currerntPage-1)*pageSize;
}
endIndex&#61;currerntPage*pageSize&#43;1;
}
}
3、通过开始索引和结束索引查出请求页码数据&#xff0c;显示给前端