0
点赞
收藏
分享

微信扫一扫

jsp分页

龙驹书房 2022-03-11 阅读 79

要实现分页,必须知道某一页的数据从哪里开始到哪里结束

  假设每页显示10条数据,则
  第n页     开始     结束
   n    (n-1)※10+1   n※10

结论:
  第n页的数:第(n-1)※10+1条——第n※10条

第0页
select ※ from student limit 0,10
第1页
select ※ from student limit 10,10
第n页
select ※ from student limit n ※ 10,10

分页实现

5个变量
  1、数据总数    (查数据库,select count (※ )…)
  2、页面大小    (用户自定义)
  3、总页数    (程序自动计算)
  4、当前页(页码)    (用户自定义)
  5、当前页的对象集合(实体类的对象集合):每页所显示的所有数据
    (查数据库,分页sql语句)

分页显示的前提下:显示数据jsp需要哪些数据

  • 当前页    currentPage
  • 页面大小    pageSize
  • 当前页的数据集合    实体类名(例如:Students)
  • 总数据    totalCount
  • 总页数    totalPage

public class PageUtil {

    /**
     * 生成分页代码
     * @param targetUrl 目标地址
     * @param totalNum 总记录数
     * @param currentPage 当前页
     * @param pageSize 每页大小
     * @return
     */
    public static String genPagination(String targetUrl,long totalNum,int currentPage,int pageSize,String param){
        long totalPage=totalNum%pageSize==0?totalNum/pageSize:totalNum/pageSize+1;
        if(totalPage==0){
            return "未查询到数据";
        }else{
            StringBuffer pageCode=new StringBuffer();
            if (currentPage==1) {
                pageCode.append("<li class=disabled><a>首页</a></li>");
            } else {
                pageCode.append("<li><a href='"+targetUrl+"?page=1&"+param+"'>首页</a></li>");
            }
            if(currentPage==1){
                pageCode.append("<li class=disabled><a>上一页</a></li>");
            }else {
                pageCode.append("<li><a href='"+targetUrl+"?page="+(currentPage-1)+"&"+param+"'>上一页</a></li>");            
            }
            for(int i=currentPage-2;i<=currentPage+2;i++){
                if(i<1||i>totalPage){
                    continue;
                }
                if(i==currentPage){
                    pageCode.append("<li class=active><a>"+i+"</a></li>");        
                }else{
                    pageCode.append("<li><a href='"+targetUrl+"?page="+i+"&"+param+"'>"+i+"</a></li>");    
                }
            }
            if(currentPage==totalPage){
                pageCode.append("<li class=disabled><a>下一页</a></li>");    
            }else {
                pageCode.append("<li><a href='"+targetUrl+"?page="+(currentPage+1)+"&"+param+"'>下一页</a></li>");    
            }
            if (currentPage==totalPage) {
                pageCode.append("<li class=disabled><a>尾页</a></li>");
            } else {
                pageCode.append("<li><a href='"+targetUrl+"?page="+totalPage+"&"+param+"'>尾页</a></li>");
            }
            return pageCode.toString();
        }
    }
    
    public static String genPaginationNoParam(String targetUrl,long totalNum,int currentPage,int pageSize){
        long totalPage=totalNum%pageSize==0?totalNum/pageSize:totalNum/pageSize+1;
        if(totalPage==0){
            return "未查询到数据";
        }else{
            StringBuffer pageCode=new StringBuffer();
            pageCode.append("<li><a href='"+targetUrl+"?page=1'>首页</a></li>");
            if(currentPage>1){
                pageCode.append("<li><a href='"+targetUrl+"?page="+(currentPage-1)+"'>上一页</a></li>");            
            }
            for(int i=currentPage-2;i<=currentPage+2;i++){
                if(i<1||i>totalPage){
                    continue;
                }
                if(i==currentPage){
                    pageCode.append("<li>"+i+"</li>");        
                }else{
                    pageCode.append("<li><a href='"+targetUrl+"?page="+i+"'>"+i+"</a></li>");    
                }
            }
            if(currentPage<totalPage){
                pageCode.append("<li><a href='"+targetUrl+"?page="+(currentPage+1)+"'>下一页</a></li>");        
            }
            pageCode.append("<li><a href='"+targetUrl+"?page="+totalPage+"'>尾页</a></li>");
            return pageCode.toString();
        }
    }
}

举报

相关推荐

0 条评论