动态实现分页
来源:互联网 发布:护士资格考试题库软件 编辑:程序博客网 时间:2024/06/07 00:37
在开发网站的过程中,做分页处理肯定是常常遇到的。这里介绍一个对整个应用都有效的分页方式。(WAP开发中,用不了JS,显得更有用了)
在JSP页面上,只需在需要显示分页信息的地方加入请求参数(参数值为分页代码)。例如,在引入了struts2标签的页面中加入代码:<s:property value="pageInfo.nav">。 在发送请求的servlet中,只需实例化pageInfo,并设置好需要跳转的url(请求地址名:httpServletRequest.getRequestURI()、请求参数:httpServletRequest.getQueryString())。
下面是用于分页处理的Page类:
public class Page {
private int numPerPage = 5; // 页大小
private int totalRows; // 总记录数
private int totalPages; // 总页数
private int currentPage; // 起始页
private int startIndex; // 起始行数
private int lastIndex; // 结束行数
private boolean hasNext; // 是否有下一页
private boolean hasPrev; // 是否有上一页
private int offset = 0; // 偏移量
private String baseUrl = ""; //转向的地址
public Page() {
}
public Page(int currentPage,int totalRows){
init(this.numPerPage,currentPage,totalRows,0);
}
public Page(int currentPage,int totalRows,int numPerPage)
{
init(numPerPage,currentPage,totalRows,0);
}
public Page(int currentPage,int totalRows,int numPerPage,int offset)
{
init(numPerPage,currentPage,totalRows,offset);
}
// 初始化Page
private void init(int numPerPage,int currentPage,int totalRows,int offset){
this.numPerPage=numPerPage;
this.currentPage=currentPage;
this.totalRows=totalRows;
this.offset=offset;
this.setTotalPages();
this.setHasNext();
this.setHasPrev();
this.setStartIndex();
this.setLastIndex();
}
//构造分页导航条 最后的字符串显示到页面上
public String getNav(){
String navStr="";
if(this.isHasPrev()){
navStr+="<a href=/""+this.getBaseUrl()+"&pageNum="+(this.getCurrentPage()-1)+"/">上一页"+"</a> ";
}
if(this.hasNext){
navStr+="<a href=/""+this.getBaseUrl()+"&pageNum="+(this.getCurrentPage()+1)+"/">下一页"+"</a> ";
}
if(this.getTotalPages()>0){
navStr+="第"+this.getCurrentPage()+"页/共"+this.getTotalPages()+"页";
}
return navStr;
}
public int getNumPerPage() {
return numPerPage;
}
public void setNumPerPage(int numPerPage) {
this.numPerPage = numPerPage;
}
public int getTotalRows() {
return totalRows;
}
public void setTotalRows(int totalRows) {
this.totalRows = totalRows;
}
public int getTotalPages() {
return totalPages;
}
public void setTotalPages() {
if(totalRows%numPerPage==0){ //正好n页
totalPages=totalRows/numPerPage;
}else{
totalPages=totalRows/numPerPage+1;
}
if(currentPage>totalPages){
if(totalPages>0){
currentPage=totalPages;
}else{
currentPage=1;
}
}
if(currentPage<1){
currentPage=1;
}
}
public int getCurrentPage() {
return currentPage;
}
public void setCurrentPage(int currentPage) {
this.currentPage = currentPage;
}
public int getStartIndex() {
return startIndex;
}
public void setStartIndex() {
startIndex=(currentPage-1)*numPerPage+1;
}
public int getLastIndex() {
return lastIndex;
}
public void setLastIndex() {
lastIndex=currentPage*numPerPage;
//lastIndex=startIndex+numPerPage-1
if(lastIndex>totalRows){
lastIndex=totalRows;
}
}
public boolean isHasNext() {
return hasNext;
}
public void setHasNext() {
if(totalPages>currentPage){
hasNext=true;
}else{
hasNext=false;
}
}
public boolean isHasPrev() {
return hasPrev;
}
public void setHasPrev() {
if(currentPage>1){
hasPrev=true;
}else{
hasPrev=false;
}
}
public int getOffset() {
return offset;
}
public void setOffset(int offset) {
this.offset = offset;
}
public String getBaseUrl() {
return baseUrl;
}
//设置“上一页”“下一页”转向的地址。url:请求项目名,param:请求参数(名值对)
public void setBaseUrl(String url,String param) {
int index=param.indexOf("pageNum")-1;
if(index>0){
// 清除先前的页面参数对,这里只处理页面信息在参数串末尾的情况。
param=param.substring(0,index);
}
this.baseUrl = url+"?"+param;
}
}
- 动态实现分页
- MySql实现动态分页
- 原生Bootstrap实现动态分页
- 使用ibatis实现动态分页查询
- grails笔记-----实现动态查询并且分页
- jquery实现json数据源,动态数字分页
- 利用jquery,java实现表格动态分页
- 动态生成table并实现分页效果
- 使用ibatis实现动态分页查询
- Android 动态Tab分页效果实现
- 动态生成table并实现分页效果
- JQuery Easy-UI 实现动态分页
- Ibatis实现动态分页分析之一
- 使用Jquery实现表格动态分页
- JQuery Easy-UI 实现动态分页
- ajax 动态绑定table同时实现分页
- 实现jquery DataTable前后台动态分页
- AJAX实现分页及动态增删操作
- Learning note(1) for Windows PowerShell Tips
- STOS/STOSB/STOSW/STOSD/STOSQ---存储字符串
- Symbian:3版到2版移植
- XSL概述(一)
- 正式开博了~
- 动态实现分页
- asp.net页面生存周期
- API窗口句柄函数
- 关于Java时间类型转换
- 基础中的基础,关于网页DOCTYPE(文档类型)的定义
- visualnet相关案例资料
- VSTS : 在性能调优中找到瓶颈所在
- 测量程序运行时间的几个函数
- lucy陪你说英语