制作分页工具类,实现分页操作JSP+Servlet+数据库
发布日期:2022-02-28 11:05:51 浏览次数:3 分类:技术文章

本文共 7480 字,大约阅读时间需要 24 分钟。

分页操作

基于jsp+Servlet+数据库的分页操作

每页限制显示的条数,显示总页数,总条数.可以看上一页下一页

操作说明 :需先进入到controller层的接口,将数据查询出来

​ 在放入到session域中,可以转发或重定向到展示数据的页面

​ 使用El表达式取出数据

在这里插入图片描述

先写个制作分页的工具类

LimitPageUtil分页工具类

import java.util.List;/** * @program: internetbar_Test * @description: 分页工具类 * @author: 高天乐 * @create: 2021-03-10 14:27 * * 属性:list集合装数据  当前页 每页显示多少条 总条数  总页数 **/public class LimitPageUtil
{
//查询到的数据 private List
list; //总条数 totalCount private Integer totalCount; //当前页数 private Integer currentPage; //每页显示的条数 public static final Integer ROWS = 10; //总页数 private Integer totalPage; public List
getList() {
return list; } public void setList(List
list) {
this.list = list; } public Integer getTotalCount() {
return totalCount; } public void setTotalCount(Integer totalCount) {
this.totalCount = totalCount; } public Integer getCurrentPage() {
return currentPage; } public void setCurrentPage(Integer currentPage) {
this.currentPage = currentPage; } public Integer getTotalPage() {
return totalPage; } public void setTotalPage(Integer totalPage) {
this.totalPage = totalPage; } /** * 计算页数开始的索引数 * @param currentPage 当前页 * @return */ public static Integer getIndex(Integer currentPage){
return (currentPage-1)*ROWS; } /** * 计算总页数 * @param totalCount 传入总条数 * @return */ public static Integer getTotalPage(Integer totalCount){
return totalCount%ROWS==0?totalCount/ROWS:totalCount/ROWS+1; }}

Dao层

这里写sql分页的接口

package com.kangye.ibms.dao;import com.kangye.ibms.entity.User;import java.util.List;/** * @program: internetbar * @description: 用户Dao * @author: 高天乐 * @create: 2021-03-06 16:44 **/public interface UserDao
{
//查询全部数据 List
allUser(Class
c,Object... obj); //查数据的总共条数 Integer totalCount();}

实现dao层接口

package com.kangye.ibms.dao.impl;import com.kangye.ibms.dao.UserDao;import com.kangye.ibms.entity.User;import com.kangye.ibms.utils.DbUtil;import java.util.Arrays;import java.util.List;/** * @program: internetbar * @description: 用户dao实现 * @author: 高天乐 * @create: 2021-03-06 16:44 **/public class UserDaoImpl implements UserDao
{
/** * 查询全部的数据 * @return */ @Override public List
allUser(Class
c,Object... obj) {
//定义sql语句 String sql = "select * from user limit ?,?"; return DbUtil.selectList(sql,c,obj); //DbUtil.selectList(sql,c,obj); 查询数据库的操作,可自行引用其他的 } /** * 查出总条数 * @return */ @Override public Integer totalCount() {
//定义sql语句 String sql = "select count(*) from user"; return DbUtil.selectWhere(sql); }}

Service层

package com.kangye.ibms.service;import com.kangye.ibms.entity.User;import com.kangye.ibms.utils.LimitPageUtil;import java.util.List;/** * @program: internetbar * @description: 用户逻辑层 * @author: 高天乐 * @create: 2021-03-06 16:46 **/public interface UserService
{
//查询全部数据 LimitPageUtil
allUser(Class
c,Integer currentPage);}

实现service层 做具体的逻辑

package com.kangye.ibms.service.impl;import com.kangye.ibms.dao.UserDao;import com.kangye.ibms.dao.impl.UserDaoImpl;import com.kangye.ibms.entity.User;import com.kangye.ibms.service.UserService;import com.kangye.ibms.utils.LimitPageUtil;import java.util.Arrays;import java.util.List;/** * @program: internetbar * @description: 用户逻辑实现 * @author: 高天乐 * @create: 2021-03-06 16:47 **/public class UserServiceImpl implements UserService
{
UserDao
userDao = new UserDaoImpl(); /** * 分页查询数据 * @param c 实体类 * @param currentPage 当前页数 * @return */ @Override public LimitPageUtil
allUser(Class
c,Integer currentPage) {
//创建分页类对象 LimitPageUtil
limit = new LimitPageUtil<>(); //当前页数 limit.setCurrentPage(currentPage); //查出数据 List
userList = userDao.allUser(c, new Object[]{ LimitPageUtil.getIndex(currentPage), LimitPageUtil.ROWS}); //添加数据 limit.setList(userList); //查出总条数 Integer totalCount = userDao.totalCount(); limit.setTotalCount(totalCount); //总页数 limit.setTotalPage(LimitPageUtil.getTotalPage(totalCount)); return limit; }}

controller层

接收页面传递过来的数据,拿到数据放入service层

import com.kangye.ibms.dao.UserDao;import com.kangye.ibms.dao.impl.UserDaoImpl;import com.kangye.ibms.entity.User;import com.kangye.ibms.service.UserService;import com.kangye.ibms.service.impl.UserServiceImpl;import com.kangye.ibms.utils.LimitPageUtil;import javax.servlet.ServletException;import javax.servlet.annotation.WebServlet;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import java.io.IOException;import java.util.List;/** * @program: internetbar_Test * @description: 用户列表 * @author: 高天乐 * @create: 2021-03-09 10:11 **/@WebServlet("/userList")public class UserListServlet extends HttpServlet {
UserService
userService = new UserServiceImpl(); @Override protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
this.doPost(req, resp); } @Override protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
//初始化页面数 Integer currentPage = 1; //前台传入的页面数 String currentPage1 = req.getParameter("currentPage"); //判断页面是否传过来页面数 if(currentPage1 != null){
currentPage = Integer.parseInt(currentPage1); //如果传过来的页面数小于1的话,赋值为1 if (currentPage < 1) {
currentPage = 1; } //创建dao层对象 UserDao
userDao = new UserDaoImpl(); //查询总数据的条数 Integer userDataCount = userDao.totalCount(); //计算出总页数 Integer totalPage = LimitPageUtil.getTotalPage(userDataCount); //传递进来的页面数大于总页数,赋值为最后一页 if(currentPage >totalPage){
currentPage = totalPage; } } LimitPageUtil
limit = userService.allUser(User.class,currentPage); //将数据放入到session里 req.getSession().setAttribute("limit",limit); //重定向到页面 resp.sendRedirect("index.jsp"); }}

JSP页面代码

<%@ page contentType="text/html;charset=utf-8" language="java" %><%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>    
数据页面
用户信息
编号 姓名 性别 年龄 居住地址 手机号 操作
${i.index+1} ${user.name} ${user.sex} ${user.age} 石家庄市 ${user.phone} 修改 删除
上一页
当前页:${limit.currentPage}/${limit.totalPage}
下一页
总数据:${limit.totalCount} 首页 尾页

转载地址:https://blog.csdn.net/weixin_47427198/article/details/114703135 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:封装操作数据库dbUtil工具类
下一篇:我对需求分析与建模的认识与应有内容建议

发表评论

最新留言

能坚持,总会有不一样的收获!
[***.219.124.196]2024年04月09日 05时36分45秒