制作分页工具类,实现分页操作JSP+Servlet+数据库
分页操作
基于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+数据库相关推荐
- java制作海报工具类,java操作图片贴图,java给图片添加文字,调整字体颜色大小间距
工具类 java操作图片,给一个大图片贴小图片,给图片添加文字并调整文字颜色,大小,字体间距,把本地图片或者网络图片加载到缓冲区 主要方法: imageIoRead方法,把图片加载到缓冲区 merge ...
- java ajax翻页_分页 工具类 前后台代码 Java JavaScript (ajax) 实现 讲解
[博客园cnblogs笔者m-yb原创, 转载请加本文博客链接,笔者github: https://github.com/mayangbo666,公众号aandb7,QQ群927113708] htt ...
- java分页的工具类,java分页工具类
PageBean-分页 package com.soyea.util; import java.io.Serializable; import java.util.List; /** * 分页工具类 ...
- java手动分页工具类
开发中,碰到了一些奇葩的业务逻辑,无法使用框架自身的分页功能,想了很久最后还是决定自己手写一个分页工具类,以备后续参考和使用,下面直接上代码, /*** 手动分页类* @param datas* @p ...
- ssm整合oracle分页,java实现ssm分页工具类及其使用方法
分享一下我现在所使用的分页工具类,不像网上的那么规范 纯属自己总结根据逻辑敲出来的,基于mysql的limit来做分页.有不对的地方还望大佬指出,直接上代码 PageTools package com ...
- Java Web的分页工具类
最近写一个java web项目,以前分页的工具类,都是基础架构的人写好了的.也没有去细看,现在遇到这个状况. 就整理一下思路,自己写了一个分页的工具类.写的不好之处,还望斧正. 下面是我的代码: Pa ...
- PageUtils后端常用分页工具类
工具类代码 package com.john.test.utils;import java.util.List;/*** @Author jiang* @Version 1.0* 分页工具类*/ pu ...
- 分页工具类——PageInfo
使用方式 前端需要提交参数当前页数currentPage,后台从数据库中查询出数据并将数据封装到PageInfo类中,把封装好的pageInfo对象传递给前端并解析. //根据查询结果返回list集合 ...
- 使用PageInfo分页工具类
使用分页工具PageInfo得到分页结果 使用SpringBoot查表的时候,可能会返回多个结果,前端展示需要进行分页,所以需要后端返回分页的结果.本文只展示PageInfo的使用方法,不对源代码进行 ...
- 【Android 插件化】Hook 插件化框架 ( 反射工具类 | 反射常用操作整理 )
Android 插件化系列文章目录 [Android 插件化]插件化简介 ( 组件化与插件化 ) [Android 插件化]插件化原理 ( JVM 内存数据 | 类加载流程 ) [Android 插件 ...
最新文章
- leetcode算法题--数组中数字出现的次数 II
- P1739 表达式括号匹配
- uniapp图标_uniapp扩展自定义uniIcon组件图标
- Veeam虚拟化备份
- 简洁的 HTML5 音乐播放器
- 小米终于开始对外输出了!
- 青蛙学Linux—Zabbix Web使用之模板④基于触发器的动作和告警媒介
- 2021华为软挑赛题_思路分析——实时更新,做多少更多少(四)
- lept_json的学习之stringify
- 反病毒工具-LordPE
- 关于Sentaurus的日常(一)(Basics)
- 8类网线利弊_八类网线你用过吗?与六类、七类等网线有啥区别?
- 浅析精益生产中改善活动的8个步骤
- 【云计算的1024种玩法】搭建 wiki 知识库
- Centos7安装Docker并配置镜像加速器
- 黄金价格走势分析,国内十大现货黄金正规平台排名
- android代码精华 各路大神写的代码精华,大家一起分享
- 用python判断身份证号性别_验证身份证号的Python脚本
- 基于微信电脑版HOOK开发的一套成品工具(可下载)
- 重读《重构》,呼唤匠艺