下面我来详细讲解JavaWeb中的简单分页完整代码攻略。
1. 原理简介
JavaWeb中的简单分页,主要通过对数据集进行分页处理。具体实现可以通过sql语句进行分页查询,也可以在页面上进行数据分页显示。
其中,采用sql语句进行分页查询的实现方式主要包含三个关键点:
- 分页参数计算
- sql语句拼接
- 分页结果返回
2. 实现步骤
2.1 分页参数计算
分页参数计算主要是针对当前页码、每页显示记录数以及总记录数三个参数进行计算,计算出分页所需要的参数信息。
以下是分页参数计算的具体步骤:
- 获取当前页码,判断当前页码是否超出总页数范围。如果超出,则将当前页码设置为最大页码。
- 获取每页显示记录数,默认设置每页显示10条记录。
- 获取总记录数total_num,计算总页数total_page:total_page = (total_num + page_size - 1) / page_size。
- 根据计算出来的分页参数信息返回结果。
示例代码:
//每页默认显示10条数据
int pageSize = 10;
//通过request对象获取当前页码参数
int currentPage = request.getParameter("pageNum")==null?1:Integer.parseInt(request.getParameter("pageNum"));
//设置当前页码不能小于1
if (currentPage <= 0) {
currentPage = 1;
}
//获取总记录数,total_num表示从数据库返回的总记录数
int total_num = ...;
//计算总页数
int totalPage = (total_num + pageSize - 1) / pageSize;
//如果当前页码大于总页数,则将当前页码设置为最大页码
if (currentPage > totalPage) {
currentPage = totalPage;
}
2.2 sql语句拼接
sql语句拼接主要是对查询sql语句进行改造,增加limit关键字和分页参数信息,实现对数据集的分页查询。
以下是sql语句拼接的具体步骤:
- 根据当前页码currentPage和每页显示记录数pageSize,计算limit关键字中的页码范围:start = (currentPage - 1) * pageSize。
- 拼接sql语句,增加limit关键字和分页参数信息:sql += " limit "+start+","+pageSize。
示例代码:
//先查询一次总记录数total_num,然后执行分页查询
String sql = "select * from user where ...";
//计算分页参数信息
int start = (currentPage - 1) * pageSize;
//拼接sql语句
sql += " limit "+start+","+pageSize;
2.3 分页结果返回
分页结果返回主要是将分页查询的结果集,以及分页参数信息封装成PageBean对象,返回给前台页面进行展示。
以下是分页结果返回的具体步骤:
- 创建PageBean对象,封装分页查询结果集和分页参数信息。
- 将返回结果对象pageBean存储在request域中,供jsp页面获取。
示例代码:
//创建PageBean对象并封装分页信息及查询结果
PageBean<User> pageBean = new PageBean<User>();
pageBean.setCurrentPage(currentPage);
pageBean.setPageSize(pageSize);
pageBean.setTotalCount(total_num);
pageBean.setTotalPage(totalPage);
pageBean.setList(userList);
//将返回结果pageBean存储在request域中,供jsp页面获取
request.setAttribute("pageBean", pageBean);
//跳转到jsp页面进行展示
request.getRequestDispatcher("userList.jsp").forward(request, response);
3. 示例说明
下面通过两个示例来说明JavaWeb中的简单分页完整代码。
3.1 示例一
假设有一个user表,其表结构如下:
CREATE TABLE `user` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`username` varchar(50) NOT NULL,
`password` varchar(50) NOT NULL,
`email` varchar(50) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
现在需要对user表进行分页查询处理,每页默认显示10条记录。
以下是核心代码实现:
//计算分页参数信息
int start = (currentPage - 1) * pageSize;
//进行sql查询
String sql = "select * from user limit "+start+","+pageSize;
//获取查询结果集
List<User> userList = userDao.queryForList(sql);
//查询总记录数
String countSql = "select count(*) from user";
int total_num = userDao.queryForInt(countSql);
//计算总页数
int totalPage = (total_num + pageSize - 1) / pageSize;
//封装成PageBean对象
PageBean<User> pageBean = new PageBean<User>();
pageBean.setCurrentPage(currentPage);
pageBean.setPageSize(pageSize);
pageBean.setTotalCount(total_num);
pageBean.setTotalPage(totalPage);
pageBean.setList(userList);
//将返回结果pageBean存储在request域中,供jsp页面获取
request.setAttribute("pageBean", pageBean);
//跳转到jsp页面进行展示
request.getRequestDispatcher("userList.jsp").forward(request, response);
3.2 示例二
假设有一个order表,其表结构如下:
CREATE TABLE `order` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`order_num` varchar(50) NOT NULL,
`order_name` varchar(50) NOT NULL,
`order_price` decimal(10,2) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
现在需要根据订单价格order_price对order表进行分页查询处理,每页默认显示5条记录。
以下是核心代码实现:
//计算分页参数信息
int start = (currentPage - 1) * pageSize;
//进行sql查询
String sql = "select * from order order by order_price limit "+start+","+pageSize;
//获取查询结果集
List<Order> orderList = orderDao.queryForList(sql);
//查询总记录数
String countSql = "select count(*) from order";
int total_num = orderDao.queryForInt(countSql);
//计算总页数
int totalPage = (total_num + pageSize - 1) / pageSize;
//封装成PageBean对象
PageBean<Order> pageBean = new PageBean<Order>();
pageBean.setCurrentPage(currentPage);
pageBean.setPageSize(pageSize);
pageBean.setTotalCount(total_num);
pageBean.setTotalPage(totalPage);
pageBean.setList(orderList);
//将返回结果pageBean存储在request域中,供jsp页面获取
request.setAttribute("pageBean", pageBean);
//跳转到jsp页面进行展示
request.getRequestDispatcher("orderList.jsp").forward(request, response);
4. 总结
JavaWeb中的简单分页完整代码,通过对分页参数计算、sql语句拼接以及分页结果返回的实现方式,可以方便地实现对数据集的分页查询处理。同时,具体实现中需要注意参数边界检查,以及sql注入等安全问题。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:JavaWeb中的简单分页完整代码(推荐) - Python技术站