分页

分页常用公式:
如果:页数=“数据库记录条数”除以“每页显示条数”==0
那么页数等于“数据库记录条数”除以“每页显示条数”
如果:页数=“数据库记录条数”除以“每页显示条数”余数>0
那么页数等于“数据库记录条数”除以“每页显示条数”+1
第N显示第几条记录(记录从零开始算:)?因为返回一个集合,集合是从零开始算的。(例如:一个显示
五条数据:那么第一页就是0到4,第二页5到9,第三页显示的是10到14,后面可以以此类推);
规律就是:(N-1)*每页显示页数=< 序号 < N*每页显示页数;
分页的本质:传入一个比较大的集合,返回需要显示页上的记录

分页常用的变量:定义变量的时候,一定要根据自己的需要去定义,可能一下想不全,没关系你可以自己编码需求去慢慢添加.

第一就是集合容器,一般用List;
根据自己的需要第一变量:
private  ArrayList biglist;//定义容器存放查询返回的所有记录:
private  int  curentPageIndex =1; //当前页,外界可以传进来,默认是1
//根据上面公式需要的条件,定义必须的变量
private int perPageIndex ;  //上一页等于当前页减去一
private int nextPageIndex; //下一页等于当前页加上一
private int countPerpage =5; //每页显示记录条数,我们这里定义是5条;
private int pagecount     //总页数,求出总页数,可以给尾页传递参数:可以根据上面的公式计算,总记录数除以每页显示记录
private int allcount //总记录条数 可以在查询总记录时求出,我的算法是,因为要返回一个集合,我们求集合的长度就可以
biglist.size();的方法:
private ArrayList smallList//小容器,返回当页的记录。
private Boolean firstPage //是否是首页
private Boolean lastPage //是否是尾页

定义之后你可以生成get和set方法:

在action里面接收页面传递的参数时候:我们定义的是int,我们用request.getParameter();返回值是string,
我们要把接收的参数转换为int,这点要注意,例如:int curentPageIndex  = Integer.ParseInt(request接收的字符串);
就是用他的封装类转换.一定要判断是否为空,第一方法当前页是空的的,不然会报空指向异常:
首页和尾页先判断。首页永远 /query.do?pageIndex =1;struts1.2只执行.do结尾的访问。struts2.0是.action
那么尾页怎么算呢?就是等于页面的总页数。就是最后一页。
尾页等于 pagecount
计算总页数的时候,就用if判断么,因为这里分两个情况,总记录条数你可以算出来,countPerpage是自己定义的写死的,这里等于5    
if(allcount%countPerpage){
         pagecount  =allcount/countPerpage;//总页数
         }else{
           pagecount  =allcount/countPerpage +1; ;//总页数
        }
       
       
做上一页的时候,当你在首页时候就不能再点击上一页了,在尾页的时候就在点击下一页了,这点要注意   
要解决这个问题我们就要做判断了,那么我们怎么知道他是上一页和下一页呢?
我们可以在定义两个Boolean型的两个变量,一个是firstpage ,是否是首页:一个是lastpage,是否是尾页。 
   
   
   if(curentPageIndex==1){
     firstpage = true;  
   }else{
     firstpage = false;
   }
   if(curentPageIndex= pagecount){
    lastpage = true;
   }else{
   lastpage =false;
   }
  
  
   那么在前台页面就可以判断,如果firstpage和lastpage =false 的时候就显示上一页和下一页的连接
   你可以想如果等于true的话,就说明当前的页面可能就是首页和尾页了,这里的逻辑问题一定要搞清楚....
  
  
   在页面判断的时候:struts 1.2 常用logic:(logic:iterate logic:equal 这里说的是常用的)标签,struts2.0 常用s:标签
   2.0的就不举例了,判断的时侯 s:if,和1.2的logic:equal 一样:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值