分页之页面页码列表计算

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

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}]

下一页

尾页

java 页码计算_分页之页面页码列表计算相关推荐

  1. 语义计算_语义多态性如何在量子计算中起作用

    语义计算 A few months ago, I published an article about an obscure mathematical concept which can be use ...

  2. si9000阻抗匹配计算_如何在设计之初计算出两层PCB板差分线的阻抗,线宽,间距...

    最近在设计一款两层板PCB.板上一些高速信号线,分别是MIMP接口的差分线和USB2.0的差分线.既然是高速线,那么就需要设计成阻抗匹配走线.MIMP差分线需要做100ohm匹配,USB线需要做90o ...

  3. java ee500错误_无法访问页面,500错误

    想问下这是怎么回事,明明跟着视频一步步敲代码的 相关配置和代码 web.xml:<?xml  version="1.0" encoding="UTF-8" ...

  4. java 高德地图 车型比价计算_高德地图的高速公路过路费计算功能是如何实现的?有相应开放的API吗?...

    高德的可以计算通行费吗?我也有用,不过没注意这个... 我推测这个计算功能的原理就是根据通行里程X每公里资费,加上途经地区的进城费之类的其他规费得出来的吧?高速公路收费标准大体上是小车0.4元每公里, ...

  5. java实现抛物线轨迹计算_抛物线、导弹线轨迹计算

    抛物线轨迹计算 不同输入情况下的抛物线有不同计算方式.为了保证飞行时间的一致,水平初速度和起点两个参数是任何情况下都需要的. 三.示例代码 void UParabolicMovementCompone ...

  6. python数学计算_初学者Python学习笔记--数学计算

    四则运算 加减乘除 1 + 2 3 10 - 6 4 5 * 5 25 20 / 5 4.0 3 ** 3 27 取整计算 13//3 4 取余数计算 13%3 1 计算顺序,括号>乘除> ...

  7. monkey 运行时间怎么计算_基于STM32F103C8T6工控板利用定时器计算某段代码的运行时间...

    本人参考了热心网友分享的一些案例,并增加了一些个人认为比较好的想法,重新整合了一下代码. 硬件:某宝网上购买的STM32F103C8T6工控板,价格50¥左右: 思路: 1)利用通用定时器(选择定时器 ...

  8. 竖流式沉淀池三角堰计算_竖流式沉淀池设计计算

    竖流式沉淀池设计计算 池中废水竖向流动的沉淀池. 池体平面图形为圆形或方形, 水由设在 池中心的进水管自上而下进入池内(管中流速应小于 30mm/s ) ,管 下设伞形挡板使废水在池中均匀分布后沿整个 ...

  9. python 边缘计算_如何实现高效的边缘计算?边缘计算如何快速处理数据缺陷

    描述 这些看似相同的特征是如何实现的?提高数据中心计算效率的本质在于提高it通信节点到边缘计算终端的数据交换吞吐量.未来边缘计算可以产生数据吞吐量提升10倍的性能提升.基于人工智能的边缘计算能够产生高 ...

最新文章

  1. matlab title多个标题_Matlab画图,只需要这几步
  2. 基于TensorFlow的简单验证码识别
  3. 2020年,从提升认知开始
  4. python程序经常被杀死之谜
  5. [原]Ubuntu桌面安装配置
  6. 库-libuv 和 libev的对比
  7. Python 三元表达式、列表推导式、生成器表达式
  8. linux下如何安装凤凰系统,凤凰系统Phoenix OS U盘版安装制作教程
  9. 可视化大屏|2022年最值得推荐的10款可视化软件
  10. 小程序版聊天室|聊天小程序|仿微信聊天界面小程序
  11. python统计pdf字数代码_Python基本数据统计.pdf
  12. html对话框取消确定,alert 确定 取消
  13. python层次分析法案例_在R语言中使用层次分析法-案例1
  14. Android自定义View——仿QQ等级天数进度
  15. 免费的office软件哪个好用
  16. LaTex多张子图并排排列方法
  17. 运用贝塞尔曲线绘制笔锋效果
  18. Express4.X版本修改默认模板jade为ejs并且试用html为视图模板后缀名
  19. Android获取通讯录权限6.0及以上
  20. DC插座的各种型号尺寸

热门文章

  1. [渝粤教育] 西南科技大学 管理运筹学与系统分析 在线考试复习资料
  2. 大数据Hadoop(一)
  3. r5 5560U怎么样 相当于什么水平
  4. 基于物理的渲染技术(PBR)系列三
  5. 【Python爆款】这款“成语接龙”太强大了?以后就靠它了、霸气。
  6. 串口、COM、UART、TTL、USB、RS-232、RS-485、I2C、SPI、CAN、1-WIRE
  7. 新浪微博布局学习--新浪微博Android版底部工具栏的Demo
  8. Springboot项目自动打包部署插件 (wagon-maven-plugin)
  9. office2016资源文件以及安装教程
  10. 如何彻底关闭Hyper-v