分页操作

基于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<T> {//查询到的数据private List<T> list;//总条数 totalCountprivate Integer totalCount;//当前页数private Integer currentPage;//每页显示的条数public static final Integer ROWS = 10;//总页数private Integer totalPage;public List<T> getList() {return list;}public void setList(List<T> 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<T> {//查询全部数据List<T> allUser(Class<User> 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<User> {/*** 查询全部的数据* @return*/@Overridepublic List<User> allUser(Class<User> c,Object... obj) {//定义sql语句String sql = "select * from user limit ?,?";return DbUtil.selectList(sql,c,obj); //DbUtil.selectList(sql,c,obj);  查询数据库的操作,可自行引用其他的}/*** 查出总条数* @return*/@Overridepublic 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<T> {//查询全部数据LimitPageUtil<T> allUser(Class<User> 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<User> {UserDao<User> userDao = new UserDaoImpl();/*** 分页查询数据* @param c 实体类* @param currentPage 当前页数* @return*/@Overridepublic LimitPageUtil<User> allUser(Class<User> c,Integer currentPage) {//创建分页类对象LimitPageUtil<User> limit = new LimitPageUtil<>();//当前页数limit.setCurrentPage(currentPage);//查出数据List<User> 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<User> userService = new UserServiceImpl();@Overrideprotected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {this.doPost(req, resp);}@Overrideprotected 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的话,赋值为1if (currentPage < 1) {currentPage = 1;}//创建dao层对象UserDao<User> userDao = new UserDaoImpl();//查询总数据的条数Integer userDataCount = userDao.totalCount();//计算出总页数Integer totalPage = LimitPageUtil.getTotalPage(userDataCount);//传递进来的页面数大于总页数,赋值为最后一页if(currentPage >totalPage){currentPage = totalPage;}}LimitPageUtil<User> 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" %>
<!DOCTYPE html>
<html>
<head><meta charset="UTF-8"><title>数据页面</title></head>
<body>
<table id="data_user" border="1" cellpadding="5px" cellspacing="0px" align="center"><caption>用户信息</caption><tr><td><input type="checkbox" name="checkAll" id="checkAll"/></td><td>编号</td><td>姓名</td><td>性别</td><td>年龄</td><td>居住地址</td><td>手机号</td><td>操作</td></tr><!--使用JSTL的for循环,遍历list数据--><c:forEach items="${limit.list}" var="user" varStatus="i"><tr><td><input type="checkbox" name="checks" value="${user.id}"/></td><td>${i.index+1}</td><td>${user.name}</td><td>${user.sex}</td><td>${user.age}</td><td>石家庄市</td><td>${user.phone}</td><td><a href="javaScript:;">修改</a> <a href="javaScript:;" onclick="del(${user.id})">删除</a></td></tr></c:forEach><tr><td colspan="8"><c:if test="${limit.currentPage>1}"><a href="/userList?currentPage=${limit.currentPage-1}">上一页</a></c:if><!--使用el表达式取出相对应的数值-->当前页:${limit.currentPage}/${limit.totalPage}<c:if test="${limit.currentPage<limit.totalPage}"><a href="/userList?currentPage=${limit.currentPage+1}">下一页</a></c:if>总数据:${limit.totalCount}<a href="/userList?currentPage=1">首页</a><a href="/userList?currentPage=${limit.totalPage}">尾页</a><button class="detele">全部删除</button><button class="add">添加</button></td></tr>
</table>
</body>
</html>

制作分页工具类,实现分页操作JSP+Servlet+数据库相关推荐

  1. java制作海报工具类,java操作图片贴图,java给图片添加文字,调整字体颜色大小间距

    工具类 java操作图片,给一个大图片贴小图片,给图片添加文字并调整文字颜色,大小,字体间距,把本地图片或者网络图片加载到缓冲区 主要方法: imageIoRead方法,把图片加载到缓冲区 merge ...

  2. java ajax翻页_分页 工具类 前后台代码 Java JavaScript (ajax) 实现 讲解

    [博客园cnblogs笔者m-yb原创, 转载请加本文博客链接,笔者github: https://github.com/mayangbo666,公众号aandb7,QQ群927113708] htt ...

  3. java分页的工具类,java分页工具类

    PageBean-分页 package com.soyea.util; import java.io.Serializable; import java.util.List; /** * 分页工具类 ...

  4. java手动分页工具类

    开发中,碰到了一些奇葩的业务逻辑,无法使用框架自身的分页功能,想了很久最后还是决定自己手写一个分页工具类,以备后续参考和使用,下面直接上代码, /*** 手动分页类* @param datas* @p ...

  5. ssm整合oracle分页,java实现ssm分页工具类及其使用方法

    分享一下我现在所使用的分页工具类,不像网上的那么规范 纯属自己总结根据逻辑敲出来的,基于mysql的limit来做分页.有不对的地方还望大佬指出,直接上代码 PageTools package com ...

  6. Java Web的分页工具类

    最近写一个java web项目,以前分页的工具类,都是基础架构的人写好了的.也没有去细看,现在遇到这个状况. 就整理一下思路,自己写了一个分页的工具类.写的不好之处,还望斧正. 下面是我的代码: Pa ...

  7. PageUtils后端常用分页工具类

    工具类代码 package com.john.test.utils;import java.util.List;/*** @Author jiang* @Version 1.0* 分页工具类*/ pu ...

  8. 分页工具类——PageInfo

    使用方式 前端需要提交参数当前页数currentPage,后台从数据库中查询出数据并将数据封装到PageInfo类中,把封装好的pageInfo对象传递给前端并解析. //根据查询结果返回list集合 ...

  9. 使用PageInfo分页工具类

    使用分页工具PageInfo得到分页结果 使用SpringBoot查表的时候,可能会返回多个结果,前端展示需要进行分页,所以需要后端返回分页的结果.本文只展示PageInfo的使用方法,不对源代码进行 ...

  10. 【Android 插件化】Hook 插件化框架 ( 反射工具类 | 反射常用操作整理 )

    Android 插件化系列文章目录 [Android 插件化]插件化简介 ( 组件化与插件化 ) [Android 插件化]插件化原理 ( JVM 内存数据 | 类加载流程 ) [Android 插件 ...

最新文章

  1. leetcode算法题--数组中数字出现的次数 II
  2. P1739 表达式括号匹配
  3. uniapp图标_uniapp扩展自定义uniIcon组件图标
  4. Veeam虚拟化备份
  5. 简洁的 HTML5 音乐播放器
  6. 小米终于开始对外输出了!
  7. 青蛙学Linux—Zabbix Web使用之模板④基于触发器的动作和告警媒介
  8. 2021华为软挑赛题_思路分析——实时更新,做多少更多少(四)
  9. lept_json的学习之stringify
  10. 反病毒工具-LordPE
  11. 关于Sentaurus的日常(一)(Basics)
  12. 8类网线利弊_八类网线你用过吗?与六类、七类等网线有啥区别?
  13. 浅析精益生产中改善活动的8个步骤
  14. 【云计算的1024种玩法】搭建 wiki 知识库
  15. Centos7安装Docker并配置镜像加速器
  16. 黄金价格走势分析,国内十大现货黄金正规平台排名
  17. android代码精华 各路大神写的代码精华,大家一起分享
  18. 用python判断身份证号性别_验证身份证号的Python脚本
  19. 基于微信电脑版HOOK开发的一套成品工具(可下载)
  20. 重读《重构》,呼唤匠艺

热门文章

  1. 德国制造和中国制造究竟不同在哪
  2. centos7/8配置secondary ip
  3. 字符设备、块设备、网络设备详解
  4. 科学管理之父——泰勒的故事
  5. Aristocracy, Democracy, and System Design 读书笔记
  6. vue 项目完美运行在IE或者360浏览器兼容模式下 踩坑笔记
  7. 软件耦合的分类及解决方法
  8. type 与 interface 的区别
  9. 20多年老码农的IT学习之路
  10. win7配置计算机失败怎么办,Win7配置失败还原更新怎么回事 Win7配置update失败的解决办法...