赞
踩
每天敲一档,档档不一样。
提示:以下是本篇文章正文内容,下面案例可供参考
现在网上各种各样的分页组件很多,但是很难找到十分“称心如意”的,于是jqPaginator诞生了。
它可以不受CSS框架限制,可以使用在各种不同风格中的网页中。
高度自定义的Html结构。所以jqPaginator努力做到合理范围内的自定义,使其灵活的使用了各种不同的场景。
1.导入jQuery插件
<script src="jquery-1.11.3.min.js"></script>
下面为:在线连接
<script src="https://code.jquery.com/jquery-1.11.3.min.js"></script>
2.导入jqPaginator插件
<script src="jqPaginator.js"></script>
代码如下(示例):
$('#id').jqPaginator({
totalPages: 100,//设置分页的总页数
visiblePages: 10,//设置最多显示的页码数(例如有100页,当前第1页,则显示1 - 7页)
currentPage: 1,//设置当前的页码
first: '<li class="first"><a href="javascript:void(0);">First</a></li>',
prev: '<li class="prev"><a href="javascript:void(0);">Previous</a></li>',
next: '<li class="next"><a href="javascript:void(0);">Next</a></li>',
last: '<li class="last"><a href="javascript:void(0);">Last</a></li>',
page: '<li class="page"><a href="javascript:void(0);">{{page}}</a></li>',
onPageChange: function (num) {
$('#text').html('当前第' + num + '页');
}
});
参数 | 默认值 | 说明 |
---|---|---|
totalPages | 0 | 设置分页的总页数 |
totalCounts | 0 | 设置分页的总条目数 |
pageSize | 0 | 设置每一页的条目数注意:要么设置totalPages,要么设置totalCounts + pageSize,否则报错;设置了totalCounts和pageSize后,会自动计算出totalPages。 |
currentPage | 1 | 设置当前的页码 |
visiblePages | 7 | 设置最多显示的页码数(例如有100页,当前第1页,则显示1 - 7页) |
disableClass | ‘disabled’ | 设置首页,上一页,下一页,末页的“禁用状态”样式 |
activeClass | ‘active’ | 设置当前页码样式 |
first | bootstrap风格 | 设置“首页”的Html结构 |
prev | bootstrap风格 | 设置“上一页”的Html结构 |
next | bootstrap风格 | 设置“下一页”的Html结构 |
last | bootstrap风格 | 设置“末页”的Html结构 |
page | bootstrap风格 | 设置页码的Html结构,其中可以使用{{page}}代表当前页,{{totalPages}}代表总页数,{{totalCounts}}代表总条目数(例如:上面的“极简风格”的Demo,就是使用了{{占位符}},并将visiblePages设为1实现的。)注意:first、prev、next、last。page只要设置一个,其余未设置的会变为空。 |
wrapper | (无) | 分页结构的Html包裹,例如:<div class="your class"></div> ,一般不会用到 |
onPageChange | (无) | 回调函数,当换页时触发(包括初始化第一页的时候),会传入两个参数:1、“目标页"的页码,Number类型2、触发类型,可能的值:“init”(初始化),“change”(点击分页) |
我这里是用ajax方法来实现的一个完整分页。
详细环境搭建教程
https://blog.csdn.net/qq_45694924/article/details/125935221?spm=1001.2014.3001.5501
项目结构为下图,我这里用的三层架构思想来搭建项目。
项目结构细节图
static和lib文件下都是属于外部导入文件
作用:用于连接MySQL数据库。
package com.hqyj.fish.utils; import java.sql.*; /** * @Author fish * @Date 2022/7/27 18:39 * @Version IntelliJ IDEA 2019.3.1 */ public class DBUtil { static { try { Class.forName("com.mysql.jdbc.Driver"); } catch (ClassNotFoundException e) { e.printStackTrace(); } } public static Connection getConnection(){ Connection con = null; try { //连接MySQL,输入自己的账号和密码 con = DriverManager.getConnection("jdbc:mysql:///user?useUnicode=true&characterEncoding=UTF-8", "root", "root"); return con; } catch (SQLException throwables) { throwables.printStackTrace(); return null; } } //关闭数据库 public static void closeAll(ResultSet rs, PreparedStatement pre, Connection con){ if(rs!=null){ try { rs.close(); } catch (SQLException throwables) { throwables.printStackTrace(); } } if(pre!=null){ try { pre.close(); } catch (SQLException throwables) { throwables.printStackTrace(); } } if(con!=null){ try { con.close(); } catch (SQLException throwables) { throwables.printStackTrace(); } } } }
作用:仅对实现这个页面的一个实例化
package com.hqyj.fish.utils; import java.util.List; /** * @Author fish * @Date 2022/7/27 18:40 * @Version IntelliJ IDEA 2019.3.1 */ public class PageUtil<T> { //当前页面 private int pageNum; //每页显示的条数 private int pageSize; //总条数 private int totalCount; //数据集 private List<T> pageInfo; public int getPageNum() { return pageNum; } public void setPageNum(int pageNum) { this.pageNum = pageNum; } public int getPageSize() { return pageSize; } public void setPageSize(int pageSize) { this.pageSize = pageSize; } public int getTotalCount() { return totalCount; } public void setTotalCount(int totalCount) { this.totalCount = totalCount; } public List<T> getPageInfo() { return pageInfo; } public void setPageInfo(List<T> pageInfo) { this.pageInfo = pageInfo; } }
作用:实例化对象类
package com.hqyj.fish.entity; /** * @Author fish * @Date 2022/7/27 18:41 * @Version IntelliJ IDEA 2019.3.1 */ public class User { private Integer id; private String userName; private String userAge; private String userSex; private String userTel; public User() { } public User(Integer id, String userName, String userAge, String userSex, String userTel) { this.id = id; this.userName = userName; this.userAge = userAge; this.userSex = userSex; this.userTel = userTel; } public Integer getId() { return id; } public void setId(Integer id) { this.id = id; } public String getUserName() { return userName; } public void setUserName(String userName) { this.userName = userName; } public String getUserAge() { return userAge; } public void setUserAge(String userAge) { this.userAge = userAge; } public String getUserSex() { return userSex; } public void setUserSex(String userSex) { this.userSex = userSex; } public String getUserTel() { return userTel; } public void setUserTel(String userTel) { this.userTel = userTel; } @Override public String toString() { return "User{" + "id=" + id + ", userName='" + userName + '\'' + ", userAge='" + userAge + '\'' + ", userSex='" + userSex + '\'' + ", userTel='" + userTel + '\'' + '}'; } }
作用:定义两个接口。
package com.hqyj.fish.dao; import com.hqyj.fish.entity.User; import java.util.List; /** * @Author fish * @Date 2022/7/27 18:50 * @Version IntelliJ IDEA 2019.3.1 */ public interface UserDao { //从第几页开始遍历,一页有多少个 List<User> queryUserPage(int pageNum,int pageSize); //总的记录个数 int countUserAll(); }
作用:实现两个接口
package com.hqyj.fish.dao.Impl; import com.hqyj.fish.dao.UserDao; import com.hqyj.fish.entity.User; import com.hqyj.fish.utils.DBUtil; import java.sql.Connection; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; import java.util.ArrayList; import java.util.List; /** * @Author fish * @Date 2022/7/27 18:42 * @Version IntelliJ IDEA 2019.3.1 */ public class UserDaoImpl implements UserDao { private Connection con = null; private PreparedStatement pre = null; private ResultSet rs = null; @Override public List<User> queryUserPage(int pageNum, int pageSize) { try { con = DBUtil.getConnection(); String sql = "select * from user limit ?,?"; pre = con.prepareStatement(sql); // pre.setInt(1,(pageNum-1)*pageSize); //设置插多少条记录 pre.setInt(2,pageSize); rs = pre.executeQuery(); List<User> users = new ArrayList<>(); while (rs.next()){ User u = new User(); u.setId(rs.getInt("id")); u.setUserName(rs.getString("user_name")); u.setUserSex(rs.getString("user_sex")); u.setUserAge(rs.getString("user_age")); u.setUserTel(rs.getString("user_tel")); users.add(u); } return users; } catch (SQLException throwables) { throwables.printStackTrace(); return null; }finally { DBUtil.closeAll(rs,pre,con); } } @Override public int countUserAll() { try { con = DBUtil.getConnection(); String sql = "select count(*) as countAll from user"; pre = con.prepareStatement(sql); rs = pre.executeQuery(); if(rs.next()){ int count = rs.getInt("countAll"); return count; } } catch (SQLException throwables) { throwables.printStackTrace(); } return 0; } }
package com.hqyj.fish.service;
import com.hqyj.fish.entity.User;
import com.hqyj.fish.utils.PageUtil;
/**
* @Author fish
* @Date 2022/7/27 18:40
* @Version IntelliJ IDEA 2019.3.1
*/
public interface UserService {
PageUtil<User> queryUserPage(int pageNum,int pageSize);
}
package com.hqyj.fish.service.Impl; import com.hqyj.fish.dao.Impl.UserDaoImpl; import com.hqyj.fish.dao.UserDao; import com.hqyj.fish.entity.User; import com.hqyj.fish.service.UserService; import com.hqyj.fish.utils.PageUtil; /** * @Author fish * @Date 2022/7/27 18:41 * @Version IntelliJ IDEA 2019.3.1 */ public class UserServiceImpl implements UserService { private UserDao ud = new UserDaoImpl(); @Override public PageUtil<User> queryUserPage(int pageNum, int pageSize) { PageUtil<User> pageUtil = new PageUtil<>(); pageUtil.setPageNum(pageNum); pageUtil.setPageSize(pageSize); pageUtil.setTotalCount(ud.countUserAll()); pageUtil.setPageInfo(ud.queryUserPage(pageNum,pageSize)); return pageUtil; } }
package com.hqyj.fish.controller; import com.fasterxml.jackson.databind.ObjectMapper; import com.hqyj.fish.entity.User; import com.hqyj.fish.service.Impl.UserServiceImpl; import com.hqyj.fish.service.UserService; import com.hqyj.fish.utils.PageUtil; 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; /** * @Author fish * @Date 2022/7/27 18:43 * @Version IntelliJ IDEA 2019.3.1 */ @WebServlet("/page") public class UserPageController extends HttpServlet { private UserService us = new UserServiceImpl(); @Override protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { req.setCharacterEncoding("UTF-8"); String method = req.getParameter("method"); if(method.equals("queryUser")){ queryUserAll(req,resp); } } @Override protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { doGet(req,resp); } public void queryUserAll(HttpServletRequest req, HttpServletResponse resp) throws IOException { // 获取当前页码 String pageNum = req.getParameter("pageNum"); int pageNum1 = Integer.parseInt(pageNum); if(pageNum1==-1){ pageNum1=1; } // 获取每页展示的条数 String pageSize = req.getParameter("pageSize"); int pageSize1 = Integer.parseInt(pageSize); PageUtil<User> userPageUtil = us.queryUserPage(pageNum1, pageSize1); resp.setContentType("text/html;charset=UTF-8"); ObjectMapper mapper = new ObjectMapper(); String json = mapper.writeValueAsString(userPageUtil); resp.getWriter().write(json); } }
后端的代码完成,现在开始写前端的代码
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> <%@ page contentType="text/html;charset=UTF-8" language="java" %> <html> <head> <title>用户列表</title> <link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/3.4.1/css/bootstrap.min.css"> <script src="static/js/jquery-1.11.3.min.js"></script> <script src="static/js/jqPaginator.js"></script> <script src="https://stackpath.bootstrapcdn.com/bootstrap/3.4.1/js/bootstrap.min.js"></script> </head> <body> <table class="table table-bordered"> <thead> <tr> <th>用户名</th> <th>年龄</th> <th>性别</th> <th>电话</th> </tr> </thead> <tbody id="tab"></tbody> <tfoot> <tr> <td colspan="8"> <ul class="pagination" id="pagination1"></ul> </td> </tr> </tfoot> </table> </body> <script> var total = 0;//总条数 var totalPages = 0;//总页数 var visiblePages = 3;//显示的分页按钮数 var currentPage = 0;//当前页码 var pageSize = 3;//每页展示的条数 $(function () { //页面加载完毕首次访问 showUser(-1); $('#pagination1').jqPaginator({ pageSize: pageSize, visiblePages: visiblePages, currentPage: currentPage, totalCounts: total, first: '<li class="first"><a href="javascript:void(0);">第一页</a></li>', prev: '<li class="prev"><a href="javascript:void(0);">前一页</a></li>', next: '<li class="next"><a href="javascript:void(0);">下一页</a></li>', last: '<li class="last"><a href="javascript:void(0);">最后一页</a></li>', page: '<li class="page"><a href="javascript:void(0);">{{page}}</a></li>', onPageChange: function (num) { /* num代表改变过后的页码 */ showUser(num); } }); }); /** * 当前页码 * @param num */ function showUser(page_num) { $.ajax({ url:"page", type:"GET", async:false, //同步请求,这里必须要设置为同步请求,否则初始化参数不成功,会报错。 dataType:"json", data:{"pageNum":page_num,"pageSize":pageSize,"method":"queryUser"}, success:function (data) { console.log(data); if(page_num==-1){//首页发送请求,默认查询第一页数据,首次访问需要初始化参数 total = data.totalCount; currentPage = data.pageNum; } var str=""; for(var i=0;i<data.pageInfo.length;i++){ str+="<tr id='t_"+data.pageInfo[i].id+"'><td>"+data.pageInfo[i].userName+"</td><td>"+data.pageInfo[i].userAge+"" +"</td><td>"+data.pageInfo[i].userSex+"</td><td>"+data.pageInfo[i].userTel } $("#tab").html(str); } }); } </script> </html>
到这里就完了,下一步就是调式,运行成功,万事大吉!
下面这些就是本代码中所需要添加得依赖。
项目包中的依赖,这是一个压缩文件,解压出来有两个文件分别是:static和lib,将它们解压。然后添加到对应的位置。
https://pan.baidu.com/s/1-U3rQIR1nXisD2jHZUXiRQ?pwd=8kf1
提取码:8kf1
链接:https://pan.baidu.com/s/1uCyV2nw2DeVd7Hp_aogm1A?pwd=wkyw
提取码:wkyw
有什么不懂,欢迎在评论区留言!
都看到这里了,点个赞,再走呗!
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。