文章目录

  • 思路
    • 数据抽出
    • 功能设计
  • 功能模块
    • 工具类
    • 前端内容
    • 用户端数据处理

思路

数据抽出

  1. 需要显示的数据,查询的数据抽出;
  2. 进行分页显示,需要统计抽出的件数,然后根据页面显示尺寸调整显示页面内容;

功能设计

  1. 翻页需要包含的内容:
    1. 首页/尾页
    2. 上一页/下一页
    3. 页码跳转,指定页跳转
  2. 需要有的参数:
    1. 当前页码
    2. 总页数
    3. 当前页所显示的件数
    4. 总件数
    5. 显示内容范围:当前页*页面件数
  3. 需要计算页面的件数和页数:
    1. 当前件数不满足页面内容,显示当前页

功能模块

工具类

  1. 定义基础参数
private int pageIndex = 1; // 当前页码
private int pageSize; // 总页数
private int totalCount;  // 总记录数
private int totalPageCount; // 每页显示的记录数
  1. 生成相关的getter、setter方法,调整相关方法的实现,赋值到时候一定要考虑到异常规避
    /*** 获取当前页码* @return pageIndex*/public int getPageIndex() {return pageIndex;}/*** 设置当前页* @param pageIndex 当前页码*/public void setPageIndex(int pageIndex) {if (pageIndex > 0) {this.pageIndex = pageIndex;}}/*** 获取每页显示的记录数* @return pageSize*/public int getPageSize() {return pageSize;}/*** 设置每页显示的记录数* @param pageSize*/public void setPageSize(int pageSize) {if (pageSize > 0) {this.pageSize = pageSize;} else {this.pageSize = 10;}}/*** 获取总记录数* @return totalCount*/public int getTotalCount() {return totalCount;}/*** 设置总记录数* @param totalCount 总记录数*/public void setTotalCount(int totalCount) {if (totalCount > 0) {this.totalCount = totalCount;setByPageNo(totalCount);}}/*** 获取总页数* @return totalPageCount*/public int getTotalPageCount() {return totalPageCount;}/*** 设置总页数* @param totalPageCount 总页数*/public void setTotalPageCount(int totalPageCount) {this.totalPageCount = totalPageCount;}
  1. 设置页数,在获取件数之后计算当前页数。需要防止非法字符越界等操作
    /*** 根据总记录数设置总页数* 此方法用于计算分页时的总页数,基于当前的每页记录数(pageSize)** @param totalCount 总记录数,即需要分页处理的数据总量*/private void setByPageNo(int totalCount) {if (this.pageSize <= 0) {this.pageSize = 10; // 防止非法值影响计算}// 计算总页数:如果总记录数除以每页记录数的余数为0,则总页数为总记录数除以每页记录数;// 否则,总页数为总记录数除以每页记录数加1this.totalPageCount = totalCount % pageSize == 0 ? totalCount / pageSize :totalCount / pageSize + 1;}

前端内容

  1. 导入共同的翻页式样,设置hidden项:保存当前的页面件数
<div><table><li></li><li></li></table><input type="hidden" id="totalPageCount" value="${totalPageCount}"/><c:import url="rollpage.jsp"><c:param name="totalCount" value="${totalCount}"/><c:param name="currentPageNo" value="${currentPageNo}"/><c:param name="totalPageCount" value="${totalPageCount}"/></c:import>
</div>
  1. 调用的翻页jsp如下:文本输入框需要检查非法字符
<%@ page contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
<script type="text/javascript"></script>
</head>
<body><div class="page-bar"><ul class="page-num-ul clearfix"><li>共${param.totalCount }条记录&nbsp;&nbsp; ${param.currentPageNo }/${param.totalPageCount }页</li><c:if test="${param.currentPageNo > 1}"><a href="javascript:page_nav(document.forms[0],1);">首页</a><a href="javascript:page_nav(document.forms[0],${param.currentPageNo-1});">上一页</a></c:if><c:if test="${param.currentPageNo < param.totalPageCount }"><a href="javascript:page_nav(document.forms[0],${param.currentPageNo+1 });">下一页</a><a href="javascript:page_nav(document.forms[0],${param.totalPageCount });">最后一页</a></c:if>&nbsp;&nbsp;</ul><span class="page-go-form"><label>跳转至</label><input type="text" name="inputPage" id="inputPage" class="page-key" /><button type="button" class="page-btn" onClick='jump_to(document.forms[0],document.getElementById("inputPage").value)'>GO</button></span></div>
</body>
<script type="text/javascript" src="${pageContext.request.contextPath }/js/rollpage.js"></script>
</html>
  1. JS代码如下,检查非法字符
function page_nav(frm,num){frm.pageIndex.value = num;frm.submit();
}function jump_to(frm,num){//alert(num);//验证用户的输入const regexp = /^[1-9]\d*$/;let totalPageCount = document.getElementById("totalPageCount").value;//alert(totalPageCount);if(!regexp.test(num)){alert("请输入大于0的正整数!");return false;}else if((num-totalPageCount) > 0){alert("请输入小于总页数的页码");return false;}else{page_nav(frm,num);}
}

用户端数据处理

  1. Servlet
 private void query(HttpServletRequest req, HttpServletResponse resp) {// 默认分页设置int currentPageNo = 1;int pageSize = 5;// 获取request请求路径中当前页码参数    String pageIndex = req.getParameter("pageIndex");// 非空验证,如果参数页码为空显示默认页数currentPageNo = pageIndex == null ? currentPageNo : Integer.parseInt(pageIndex);// 创建UserService实例UserService userService = new UserServiceImpl();List<User> userList;// 获取用户总数,用于分页int totalCount = userService.getUserCount(queryUserName, queryUserRole);// 创建并配置PageSupport对象PageSupport pageSupport = new PageSupport();// 设置分页当前页码pageSupport.setPageIndex(currentPageNo);// 设置分页总页数pageSupport.setPageSize(pageSize);// 设置分页总数pageSupport.setTotalCount(totalCount);// 计算总页数int totalPageCount = pageSupport.getTotalPageCount();// 校验当前页码if (currentPageNo < 1) {currentPageNo = 1;} else if (currentPageNo > totalPageCount) {currentPageNo = totalPageCount;}// 根据查询条件和分页信息获取用户列表userList = userService.getUserList(queryUserName, queryUserRole, currentPageNo, pageSize);// 将用户列表和其他信息存储在请求对象中req.setAttribute("userList", userList);req.setAttribute("totalCount", totalCount);req.setAttribute("currentPageNo", currentPageNo);req.setAttribute("totalPageCount", totalPageCount);// 将内容转发到list页面进行内容显示req.getRequestDispatcher("/jsp/userlist.jsp").forward(req, resp);}
  1. Dao

// 定义SQL语句,将翻页的数据条数 反映到SQL中,每次翻页进行一次DB交互
StringBuilder sql = new StringBuilder();
// 查询数据通过条件最后进行排序,筛选从哪一条开始到多少条
sql.append("select u.*, r.roleName as userRoleName from smbms_user u, smbms_role r where " +"u.userRole = r.id");
sql.append(" order by createDate DESC limit ?, ?");// 准备SQL语句执行
preparedStatement = connection.prepareStatement(sql.toString());// 定义参数,防止SQL注入导致异常
// currentPageNo 当前页码
// pageSize      每页数量
List<Object> list = new ArrayList<>();
// 计算上一页的最后一件
currentPageNo = (currentPageNo - 1) * pageSize;
list.add(currentPageNo);
list.add(pageSize);// 返回查询结构
ResultSet rs = BaseDao.executeQuery(connection, String.valueOf(sql), preparedStatement, params, rs);while (rs.next()) {// 内容赋值,赋值到要显示的对象中}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/pingmian/85716.shtml
繁体地址,请注明出处:http://hk.pswp.cn/pingmian/85716.shtml
英文地址,请注明出处:http://en.pswp.cn/pingmian/85716.shtml

如若内容造成侵权/违法违规/事实不符,请联系英文站点网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

SpringBoot-准备工作-工程搭建

目录 1.创建空项目 2.检查项目jdk版本 3.检查Maven的全局配置 4.配置项目的字符集 5.创建SpringBoot工程 1.创建空项目 2.检查项目jdk版本 3.检查Maven的全局配置 4.配置项目的字符集 5.创建SpringBoot工程

01、python实现matlab的插值算法,以及验证

import numpy as np from scipy.interpolate import griddata import sys def griddata_wrapper(x, y, v, xq, yq, method): """ 包装scipy的griddata函数,支持单个点或多个点的插值 """ try: # 将输入转换为numpy数组…

React ahooks——useRequest

目录 简介 1. 核心功能 2. 基本用法 3. 高级用法 &#xff08;1&#xff09;轮询请求&#xff08;Polling&#xff09; &#xff08;2&#xff09;防抖&#xff08;Debounce&#xff09; &#xff08;3&#xff09;依赖刷新&#xff08;refreshDeps&#xff09; &#x…

re正则、Xpath、BeautifulSouplxml 区别

目录 1. re 正则表达式2. XPath3. BeautifulSoup + lxml4. 功能特性对比5.对比与建议在网页数据解析中,正则表达式(re)XPath(常结合lxml)BeautifulSoup(常依赖解析器如lxml)是三种主流技术,各有核心差异和适用场景。 1. re 正则表达式 优势:文本匹配效率高,尤其适用于…

教师办工专用 资源包|课件+手抄报+PPT模板+常用表格 PDF格式93GB

如果家里亲戚或朋友有走上教育之路的人&#xff0c;给他这份整合可以减轻不少工作负担&#xff0c;更快地适应教育的节奏。也可以发给孩子的老师让他在平时做个班级活动的参考 《老师教学办工资源包》包括手抄报大全、教学计划、工作总结、培训手册、课程表等教学、办公常用资…

算法第37天| 完全背包\518. 零钱兑换 II\377. 组合总和 Ⅳ\57. 爬楼梯

完全背包 完全背包和01背包的区别 纯完全背包&#xff0c;遍历背包和物品的顺序是可以对调的&#xff0c;只要求得出最大价值&#xff0c;不要求凑成总和的元素的顺序&#xff1b; 01背包&#xff0c;遍历背包和物品的顺序是不可以对调的&#xff08;一维不行&#xff0c;二维…

七彩喜智慧康养平台:重构银发生活的数字守护网

随着社会老龄化程度的不断加深&#xff0c;如何让老年人安享幸福晚年成为社会关注的焦点。 在这一背景下&#xff0c;七彩喜智慧康养平台应运而生&#xff0c;以创新的科技手段和贴心的服务理念&#xff0c;为老年人的生活带来了诸多好处&#xff0c;发挥着重要作用&#xff0…

【设计模式】用观察者模式对比事件订阅(相机举例)

&#x1f4f7; 用观察者模式对比事件订阅(相机举例) 标签&#xff1a;WPF、C#、Halcon、设计模式、观察者模式、事件机制 在日常开发中&#xff0c;我们经常使用 事件机制&#xff08;Event&#xff09; 来订阅图像采集信号。然而当系统日益复杂&#xff0c;多个模块同时需要响…

【数据分析九:Association Rule】关联分析

一、数据挖掘定义 数据挖掘&#xff1a; 从大量的数据中挖掘那些令人感兴趣的、有用的、隐含的、先前未知的 和可能有用的 模式或知识 &#xff0c;并据此更好的服务人们的生活。 二、四类任务 数据分析有哪些任务&#xff1f; 今天我们来讲述其中的关联分析 三、关联分析 典…

AWS Security Hub邮件告警设置

问题 需要给AWS Security Hub设置邮件告警。 前提 已经启用AWS Security Hub。 AWS SNS 创建一个AWS Security Hub告警主题SecurityHub-Topic&#xff0c;如下图&#xff1a; 创建完成后&#xff0c;订阅该主题。 AWS EventBridge 设置规则名SecurityHubFindings-Rules…

(OSGB转3DTiles强大工具)ModelSer--强大的实景三维数据分布式管理平台

1. ModelSer 能帮我们做什么 1.1 最快速的 osgb 发布 3dtiles 服务 测试的速度大于 10G/分钟&#xff0c;且速度基本是线性的&#xff08;100G10分钟&#xff0c;1T100分钟&#xff09;。支持城市级倾斜数据半天内完成服务发布&#xff0c;并支持数据的单块更新。 1.2 支持所见…

《HTTP权威指南》 第5-6章 Web服务器和代理

基本Web服务器请求的步骤 1、建立连接 接受一个客户端连接&#xff0c;或者如果不希望与这个客户端建立连接&#xff0c;就将其关闭。 处理新连接客户端主机名识别&#xff1a;反向DNS查找&#xff0c;将IP地址转换为客户端主机名过ident确定客户端用户&#xff1a;客户端支持…

微信二次开发,对接智能客服逻辑

接口友情链接&#xff0c;点击即可访问。 ## 设备创建与复用机制 首次调用/login/getLoginQrCode需传空appId触发设备创建&#xff0c;响应返回固定设备ID。后续登录必须复用此ID以避免风控&#xff08;同一微信号绑定固定设备&#xff09;。设备类型可选ipad/mac&#xff0c;当…

网站并发访问量达到1万以上需要注意哪些事项

当网站并发访问量达到1万以上时&#xff0c;需要注意以下几个方面‌&#xff1a; ‌服务器硬件配置‌&#xff1a; ‌处理器&#xff08;CPU&#xff09;‌&#xff1a;选择多核、高频率的CPU&#xff0c;以确保服务器能够高效地处理大量的请求。‌内存&#xff08;RAM&#xf…

二、OpenCV的第一个程序

文章目录 一、第一个程序&#xff1a;显示图片1.1 cv::imread1.2 cv::namedWindow1.3 cv::imshow 二、第二个程序&#xff1a;视频2.1 cv::VideoCapture 三、加入了滑动条的基本浏览窗口 一、第一个程序&#xff1a;显示图片 示例&#xff1a;一个简单的加载并显示图像的OpenC…

第14次:商品列表、热销商品及详情

第1步&#xff1a;定义获取商品列表的视图类ListView&#xff0c;本视图中完成了如下功能&#xff1a; 根据商品类别id获取商品类别信息&#xff0c;并根据类别信息反向查询到所有的该类别的商品。根据页号和排序方式两个参数&#xff0c;获取某个页面的商品列表信息。 #good…

基于双层注意力重加权 LSTM 的中文长文本谣言检测模型

文章目录 1.摘要2.介绍3.相关工作3.1 假新闻检测数据集3.2 假新闻检测方法3.3 长文本假新闻检测的挑战与进展3.4 与现有方法的区别 4.方法4.1 模型结构4.2模型代码4.3 损失函数与优化方法 5. 实验5.1 数据集与预处理5.2 实验设置5.3 实验结果5.4 对比分析5.5 结果分析与讨论 6.…

在 MyBatis 的xml中,什么时候大于号和小于号可以不用转义

在 MyBatis 中&#xff0c;< 和 > ​在动态 SQL 标签内部​ 无需转义的功能是在以下版本引入的&#xff1a; &#x1f4cc; 关键版本说明 版本支持情况注意事项​MyBatis 3.3.0​​✅ 在 <if>、<where>、<set> 等动态 SQL 标签内部可直接使用 < 和…

Redis 的穿透、雪崩、击穿

Redis 的穿透、雪崩、击穿 1、缓存穿透 定义 缓存穿透是指查询一个不存在的数据&#xff0c;由于缓存中没有该数据&#xff0c;每次请求都会直接访问数据库&#xff0c;导致数据库压力过大 产生原因 恶意攻击&#xff1a;攻击者故意请求大量不存在的key&#xff0c;导致请求直…

有道翻译官手机版:智能翻译,随行助手

在当今全球化的时代&#xff0c;语言不再是交流的障碍。无论是学习外语、出国旅游、商务出差还是日常交流&#xff0c;一款高效、准确的翻译软件都能成为我们的好帮手。有道翻译官手机版正是这样一款功能强大、操作便捷的语言翻译软件&#xff0c;它凭借先进的翻译技术和丰富的…