JavaWeb学习笔记(九)之分页

分页

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

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

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

MySQL实现分页的sql语句
limit    开始,多少条
例如:

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

即:select ※ from student limit 页数 ※ 页面大小,10
页面大小:每一页显示的数据条数

分页实现

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

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

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

注意!!!新建Page类,用于封装以上5个字段

例子如下:

/**
 * 分页工具类
 * @author Administrator
 *
 */
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();
		}
	}
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值