java 页码计算_分页之页面页码列表计算

分页之页面页码列表计算

我们通过看百度的分页可以发现以下规律:

1.最多显示10个页码;

2.当前页在页码中的位置定为六;

所以只需要当前页码来定出来页码列表,定下来页码列表只需要两个数据:begin,end;

需要使用pc(当前页码)来推算出begin和end:

begin=pc-5;

end=pc+4;

计算公式:

如果总页数<=10(列表长度),那么begin=1,end=10;否则使用计算公式:begin=pc-5以及end=pc+4;但是这样也会导致头溢出和尾溢出。

头溢出:当begin<1时,让begin=1,end=10;

尾溢出:当end=${tp(总页数)}时,让end=tp;

代码实现:

1.首先要创建一个pagebean:

packagepages;importjava.util.List;public class PageBean{private int pc;//当前页码page code//private int tp;//总页数=总记录数/每页记录数

private int tr;//总记录数

private int ps;//每页记录数

private List beanlist;//当前页的记录

public intgetPc() {returnpc;

}public void setPc(intpc) {this.pc =pc;

}public intgetTp() {int num=tr/ps;int tp=tr%ps;return tp==0?num:num+1;

}public intgetTr() {returntr;

}public void setTr(inttr) {this.tr =tr;

}public intgetPs() {returnps;

}public void setPs(intps) {this.ps =ps;

}public ListgetBeanlist() {returnbeanlist;

}public void setBeanlist(Listbeanlist) {this.beanlist =beanlist;

}

@OverridepublicString toString() {return "PageBean [pc=" + pc + ", tr=" + tr + ", ps=" + ps + ", beanlist=" + beanlist + "]";

}

}

2.servlet层:

publicString findall(HttpServletRequest request, HttpServletResponse response)throwsServletException, IOException {/** 1.获取页面传递的pc

* 2.给定ps的值

* 3.使用pc和ps调用service方法,得到pagebean对象,保存到request域

* 4.转发到list.jsp*/

int pc=getpc(request);int ps=10;

PageBean pb=customerservice.findall(pc,ps);

request.setAttribute("pb", pb);return "f:/list.jsp";

}/** 获取pc*/

public intgetpc(HttpServletRequest request){

String value=request.getParameter("pc");if(value==null||value.trim().isEmpty()){return 1;

}returnInteger.parseInt(value);

}

3.service层:

public PageBean findall(int pc, intps){returncustomerdao.findall(pc,ps);

}

4.dao层:

/** 查询所有*/

public PageBean findall(int pc, intps){try{

PageBean pb=new PageBean();

pb.setPc(pc);

pb.setPs(ps);/** 得到tr*/String sql="select count(*) from t_customers";

Number trnum=(Number)qr.query(sql, newScalarHandler());int tr=trnum.intValue();

pb.setTr(tr);/** 得到beanlist*/String sql1="select * from t_customers order by cname limit ?,?";

List beanlist=qr.query(sql1, new BeanListHandler(customer.class),

(pc-1)*ps,ps);

pb.setBeanlist(beanlist);returnpb;

}catch(SQLException e) {throw newRuntimeException(e);

}

}

4.jsp页面的设置:

第${pb.pc}页/供${pb.tp}页

首页

上一页

[${i}]

[${i}]

下一页

尾页

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值