java web 分页技术_Java Web 之分页技术

实现分页中的虽然能提供分页,但是需要手动在地址栏输入第几页,这显然对用户极不友好,不过别急,上面只是实现了分页的效果。

很多网站都提供了分页功能,分页页面效果:

首页 上一页 1 2 3 4 5 6 7 下一页 尾页

上面的工具条只适用页数很少的业务,google查询的页数有上万页,不可能全部显示在页面上,也不可能提供“尾页”这个选项,所以以当前页为中心,提供前后5页的跳转链接,下面是一种可借鉴的分页工具条(假设当前页数为10):

上一页 5 6 7 8 9 10 11 12 13 14 15 下一页

谷歌的分页工具条:

3f5acfca007e

现在一般的做法,分页查询都会用单独类来封装查询结果

PageBean ----- 在业务层返回数据返回PageBean对象

public class PageBean {

public static final int NUMPERPAGE = 10; // 每页多少条

private int pNum; // 当前第几页

private int totalPageNum; // 总页数

private int totalRecordNum; // 总记录数

private List customers; // 结果数据

public int getpNum() {

return pNum;

}

public void setpNum(int pNum) {

this.pNum = pNum;

}

public int getTotalPageNum() {

return totalPageNum;

}

public void setTotalPageNum(int totalPageNum) {

this.totalPageNum = totalPageNum;

}

public int getTotalRecordNum() {

return totalRecordNum;

}

public void setTotalRecordNum(int totalRecordNum) {

this.totalRecordNum = totalRecordNum;

}

public List getCustomers() {

return customers;

}

public void setCustomers(List customers) {

this.customers = customers;

}

}

于是,在CustomerService修改pageQuery(int pNum)方法:

public static final int NUMBERPAGE = 10; // 设置每页条数为常量

public PageBean pageQuery(int pNum) {

// 根据页码 和 每页条数 计算开始索引

int start = (pNum - 1) * NUMPERPAGE;

PageBean bean = new PageBean();

// 封装当前页码

bean.setpNum(pNum);

// 调用DAO进行分页查询 --- 结果数据

CustomerDAO customerDAO = new CustomerDAO();

List customers = customerDAO.findByPage(start,

PageBean.NUMPERPAGE);

bean.setCustomers(customers);

// 封装总记录条数,findTotalRecordNum()方法见下文

int totalRecordNum = customerDAO.findTotalRecordNum();

bean.setTotalRecordNum(totalRecordNum);

// 计算总页数,很常用!!!

int totalPageNum = (totalRecordNum + PageBean.NUMPERPAGE - 1)

/ PageBean.NUMPERPAGE;

bean.setTotalPageNum(totalPageNum);

return bean;

}

在CustomerDAO中新增findTotalRecordNum()方法:

// 查询总记录条数

public int findTotalRecordNum() {

String sql = "select count(*) from customer";

QueryRunner queryRunner = new QueryRunner(JDBCUtils.getDataSource());

// ScalarHandler

try {

// 因为结果集只有一行一列,所以这里应该用ScalarHandler

long totalRecordNum = (Long) queryRunner.query(sql,

new ScalarHandler(1));

return (int) totalRecordNum; // int表示的范围足够了

} catch (SQLException e) {

e.printStackTrace();

}

return 0;

}

于是,在PageQueryServlet中修改:

修改前:

List customers = customer Service.pageQuery(pNum);

// 传递结果进行显示

request.setAttribute("customers", customers);

request.getRequestDispatcher("/list.jsp").forward(request,

response);

修改后:

PageBean pageBean = customerService.pageQuery(pNum);

// 传递结果进行显示

request.setAttribute("pageBean", pageBean); // ${pageBean}

request.getRequestDispatcher("/page_list.jsp").forward(request,

response);

接下来就是编写JSP页面:

预期效果:

6derC8y.png

实现首页 上一页

首页 上一页

首页

上一页

实现下一页 尾页

下一页 尾页

下一页

尾页

实现 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25

${i }

至此基本功能完成,但是显示的效果很差:

3f5acfca007e

现在的问题是:根本不知道哪个是当前页,所以还要改进一下foreach中的代码:

${i }

${i }

现在即可清晰的显示当前页了(可用CSS/JavaScript进一步美化界面,功能实现到此为止)

3f5acfca007e

实现输入页码跳转,在尾页代码的后面加入input:

对应的JavaScript代码:

function jump(){

// 获得用户输入页码

var pNum = document.getElementById("pNum").value;

location.href="/pageQuery?pNum=" + pNum;

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
熟悉项目开发过程中SSM框架、JSP、Mysql使用,知道各技术之间的如何衔接; 考虑到部分学生只需要学习前台(买家)或是后台(后台),故将电商系统分为电商系统前台和电商系统后台两个项目, 当前课程包含电商系统前台和电商系统后台 该课程主要涉及到的技术有:  项目涉及的技术:  1、前端:jsp、css、javascript、jQuery(js框架)、bootstrap框架 2、后台:Spring MVC、Spring、Mybatis框架、javaMail进行邮件发送、jstl 、jstl自定义分页标签、代码生成器等 3、数据库:Mysql 4、服务器:Tomcat项目开发涉及的功能: 1、项目以及数据库搭建 2、用户登录、退出3、用户注册、邮件发送、以及用户信息激活4、首页商品信息页面搭建以及查询功能实现5、查询商品明细6、加入商品至购物车、删除、更新、清除购物车商品信息7、确认订单信息8、订单页面搭建以及下订单功能实现9、查询我的购物车以及订单信息10、商品明细查看,商品修改,商品下架11、商品类型管理12、订单管理13、代码机器人使用等等其他实战项目:java项目实战之电商系统全套(前台和后台)(java毕业设计ssm框架项目)https://edu.csdn.net/course/detail/25771 java项目之oa办公管理系统(java毕业设计)https://edu.csdn.net/course/detail/23008 java项目之hrm人事管理项目(java毕业设计)https://edu.csdn.net/course/detail/23007 JavaWeb项目实战之点餐系统前台https://edu.csdn.net/course/detail/20543 JavaWeb项目实战之点餐系统后台https://edu.csdn.net/course/detail/19572 JavaWeb项目实战之宿舍管理系统(Java毕业设计含源码)https://edu.csdn.net/course/detail/26721 JavaWeb项目实战之点餐系统全套(前台和后台)https://edu.csdn.net/course/detail/20610 java项目实战之电子商城后台(java毕业设计SSM框架项目)https://edu.csdn.net/course/detail/25770 java美妆商城项目|在线购书系统(java毕业设计项目ssm版)https://edu.csdn.net/course/detail/23989 系统学习课程:JavaSE基础全套视频(环境搭建 面向对象 正则表达式 IO流 多线程 网络编程 java10https://edu.csdn.net/course/detail/26941 Java Web从入门到电商项目实战挑战万元高薪(javaweb教程)https://edu.csdn.net/course/detail/25976其他素材版(毕业设计或课程设计)项目:点击老师头像进行相关课程学习

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值