html分页过多,实现分页处理,固定分页数目,数目始终中间显示,自定义分页跳转(在结尾的代码)

article/2025/8/15 16:37:41

目录

问题描述:

效果展示:

解决思想:

一、首先你想要先判断当前数据库表中的页数和3是什么关系

二、其次讨论一下特殊的首页和尾页,也就是第1页和第8页

三、如何对userPageInfo.pageNum-1和userPageInfo.pageNum+1进行判断

四、如何对输入的页数在begin和end之间进行判断

流程图:

只包含页数的代码:

Controller部分封装userPageInfo的代码:

整个分页条的代码:


问题描述:

昨晚想实现这个功能,上网搜了很多都是有关js的,由于本人没怎么学过js,因为好多方法都放弃了

后来在一篇csdn上发现了html的写法

传送门:https://blog.csdn.net/qq_41215763/article/details/78980647?depth_1-utm_source=distribute.pc_relevant.none-task&utm_source=distribute.pc_relevant.none-task

我在套用了我的情况之后,对这个代码稍作了一些润色和说明,在这里分享一下我的经验和解决的过程

效果展示:

一、当我的页数只有3页以内的时候

第一页:

 第二页:

二、当我的页数超过3页以内的时候

我要显示的目标效果是:(数据库的表有8页)

点击1的时候显示123

点击2的时候显示123

点击3的时候显示234

点击4的时候显示345

点击5的时候显示456

点击6的时候显示567

点击7的时候显示678

点击8的时候显示678

为了方便,我只在首页和尾页全截,其余都只截图页码部分的变化

第一页:

解决思想:

前提是有我从controller传过来的userPageInfo对象,这部分是controller部分,由于现在讲的是html部分的写法,所以关于controller部分的代码我在结尾贴出

由于我要实现的是每页只显示三页,你们需要根据自己每页需要展示的页数,在我的代码上进行修改

我现在就拿每页显示三页举例子

一、首先你想要先判断当前数据库表中的页数和3是什么关系

如果<=3,那么说明,你有几页就显示几页

比如你有1页,那就显示1页

比如你有2页,那就显示1 2页

比如你有3页,那就显示1 2 3页

如果>3,那么说明,你需要进行对你输入的页数做一些判断来处理这个页数

如果你输入的页数是1,那就显示1 2 3(特殊,后面说)

如果你输入的页数是2,那就显示1 2 3

如果你输入的页数是3,那就显示2 3 4

如果你输入的页数是4,那就显示3 4 5

如果你输入的页数是5,那就显示4 5 6

如果你输入的页数是6,那就显示5 6 7

如果你输入的页数是7,那就显示6 7 8

如果你输入的页数是n,那就显示userPageInfo.pageNum-1—userPageInfo.pageNum—userPageInfo.pageNum+1

如果你输入的页数是8,那就显示6 7 8(特殊,后面说)

二、其次讨论一下特殊的首页和尾页,也就是第1页和第8页

首先解释一下为什么这两页特殊

这是由于我们在进行上述判断时,

userPageInfo.pageNum-1—userPageInfo.pageNum—userPageInfo.pageNum+1这个式子产生

其中的userPageInfo.pageNum-1和userPageInfo.pageNum+1是有可能超过我们的页数范围的


举个栗子:

比如我现在数据库的表有8页,也就是我能达到的地方只有1-8,除此之外,都去不了

但是

当userPageInfo.pageNum=1时,userPageInfo.pageNum-1=0

当userPageInfo.pageNum=8时,userPageInfo.pageNum+1=9


所以要对userPageInfo.pageNum-1和userPageInfo.pageNum+1进行判断

三、如何对userPageInfo.pageNum-1和userPageInfo.pageNum+1进行判断

首先我们先用变量存储一下他们两个,方便我们后面判断

假设用begin=userPageInfo.pageNum-1,用end=userPageInfo.pageNum+1存储


举个栗子:

如果begin==0,那就只显示1 2 3页

因为我要显示3页,所以这是固定的(如果你要显示4页,那就是显示1 2 3 4)

此时begin=1,end=3

(如果你要显示4页,那么begin=1,end=4)

如果end==0,那就只显示6 7 8页

这是需要根据我们数据库的页数来决定的,所以不是固定的(如果你要显示4页,那就是显示5 6 7 8)

此时begin=userPageInfo.pages-2,end=userPageInfo.pages

(如果你要显示4页,那么begin=userPageInfo.pages-3,end=userPageInfo.pages)


这样一来我们只要在页数里,对输入的页数进行判断,判断的范围就在begin和end之间

四、如何对输入的页数在begin和end之间进行判断

我们要对显示在屏幕上的页数进行遍历判断

如果页数就是此时访问的页数,那就把属性设置为<li class="active"> 这样就可以点亮页数图标了


举个栗子:

比如说当前显示的页数是3 4 5,我想访问4

遍历到3 5的时候,不是我要访问的,图标就不亮

遍历到4的时候,就是我要访问的,此时就给他设置一个active属性,让图标亮


流程图:

只包含页数的代码:

<c:if test="${userPageInfo.pages<=3}"><c:set var="begin" value="1" /><c:set var="end" value="${userPageInfo.pages}" />
</c:if>
<c:if test="${userPageInfo.pages>3}"><c:choose><c:when test="${userPageInfo.pageNum < 3}"><c:set var="begin" value="1" /><c:set var="end" value="3" /></c:when><%--页数超过了3页--%><c:otherwise><c:set var="begin" value="${userPageInfo.pageNum - 1}" /><c:set var="end" value="${userPageInfo.pageNum + 1}" /><%--如果begin减1后为0,设置起始页为1,最大页为3--%><c:if test="${begin == 0}"><c:set var="begin" value="1" /><c:set var="end" value="3" /></c:if><%--如果end超过最大页,设置起始页=最大页-2--%><c:if test="${end > userPageInfo.pages}"><c:set var="begin" value="${userPageInfo.pages - 2}" /><c:set var="end" value="${userPageInfo.pages}" /></c:if></c:otherwise></c:choose>
</c:if>
<%--遍历--%>
<c:forEach var="i" begin="${begin}" end="${end}"><%--当前页,选中--%><c:choose><c:when test="${i == userPageInfo.pageNum}"><li class="page-item active"><a class="page-link" href="${pageContext.request.contextPath}/user/listByPage?pageNum=${i}">${i}</a></li></c:when><%--不是当前页--%><c:otherwise><li class="page-item"><a class="page-link" href="${pageContext.request.contextPath}/user/listByPage?pageNum=${i}">${i}</a></li></c:otherwise></c:choose>
</c:forEach>

Controller部分封装userPageInfo的代码:

@Controller
@RequestMapping("/user")
public class UserController {//注入service对象@Resourceprivate UserService userService;/*** 分页查询* @param pageNum 把当前页数传到后台,并给他一个默认值*                把查到的数据和分页类传到前台页面* @return*/@RequestMapping("/listByPage")public String listByPage(@RequestParam(name="pageNum",defaultValue = "1") Integer pageNum,Model model){//设置分页参数PageHelper.startPage(pageNum,5);//查询所有数据List<User> userList = userService.findAll();/*** pageNum:当前页* pageSize:每页的数量* size:当前页的数量* pages:总页数* total:总记录数*///使用PageInfo封装查询结果,把数据放在分页类中PageInfo<User> userPageInfo = new PageInfo<>(userList);//传分页类model.addAttribute("userPageInfo",userPageInfo);return "test";}
}

整个分页条的代码:

<div><nav aria-label="Page navigation example" ><ul class="pagination justify-content-center" style="align-items: center"><li class="page-item"><a class="page-link" href="${pageContext.request.contextPath}/user/listByPage?pageNum=${1}">首页</a></li><li class="page-item"><c:if test="${userPageInfo.hasPreviousPage }"><a class="page-link" href="${pageContext.request.contextPath}/user/listByPage?pageNum=${userPageInfo.pageNum-1}">上一页</a></c:if><c:if test="${userPageInfo.isFirstPage==true}"><a class="page-link disabled" href="#" tabindex="-1" aria-disabled="true">上一页</a></c:if></li><c:if test="${userPageInfo.pages<=3}"><c:set var="begin" value="1" /><c:set var="end" value="${userPageInfo.pages}" /></c:if><c:if test="${userPageInfo.pages>3}"><c:choose><c:when test="${userPageInfo.pageNum < 3}"><c:set var="begin" value="1" /><c:set var="end" value="3" /></c:when><%--页数超过了3页--%><c:otherwise><c:set var="begin" value="${userPageInfo.pageNum - 1}" /><c:set var="end" value="${userPageInfo.pageNum + 1}" /><%--如果begin减1后为0,设置起始页为1,最大页为3--%><c:if test="${begin == 0}"><c:set var="begin" value="1" /><c:set var="end" value="3" /></c:if><%--如果end超过最大页,设置起始页=最大页-2--%><c:if test="${end > userPageInfo.pages}"><c:set var="begin" value="${userPageInfo.pages - 2}" /><c:set var="end" value="${userPageInfo.pages}" /></c:if></c:otherwise></c:choose></c:if><%--遍历--%><c:forEach var="i" begin="${begin}" end="${end}"><%--当前页,选中--%><c:choose><c:when test="${i == userPageInfo.pageNum}"><li class="page-item active"><a class="page-link" href="${pageContext.request.contextPath}/user/listByPage?pageNum=${i}">${i}</a></li></c:when><%--不是当前页--%><c:otherwise><li class="page-item"><a class="page-link" href="${pageContext.request.contextPath}/user/listByPage?pageNum=${i}">${i}</a></li></c:otherwise></c:choose></c:forEach><li class="page-item"><c:if test="${userPageInfo.hasNextPage }"><a class="page-link" href="${pageContext.request.contextPath}/user/listByPage?pageNum=${userPageInfo.pageNum+1}">下一页</a></c:if><c:if test="${userPageInfo.isLastPage==true}"><a class="page-link disabled" href="#">下一页</a></c:if></li><li class="page-item"><a class="page-link" href="${pageContext.request.contextPath}/user/listByPage?pageNum=${userPageInfo.pages}">尾页</a></li><li class="page-item"><span class="page-item"><a>共${userPageInfo.total}条记录,总共${userPageInfo.pages}页,到第</a></span></li><li class="page-item"><div class="input-group-sm"><input type="text" id="inputPage" class="page-link" style="width: 35px;height: 35px"></div></li><li class="page-item"><a>页</a></li><li class="page-item"><a class="page-link disabled" href="${pageContext.request.contextPath}/user/listByPage?pageNum="onclick="this.href+=document.getElementById('inputPage').value>${userPageInfo.pages}?${userPageInfo.pages}:document.getElementById('inputPage').value">跳转</a></li></ul></nav>
</div>

由于本人初学,有哪里说的不对的地方,欢迎大佬们指出


http://chatgpt.dhexx.cn/article/sYPaPUWk.shtml

相关文章

【全栈之前端编程】Javaweb使用thymeleaf局部刷新结合Layui插件实现Html分页

热门系列&#xff1a; 程序人生&#xff0c;精彩抢先看 目录 1、前言 2、正文 2.1 开发环境介绍 2.2 实现代码 2.3 实现流程说明 2.4 实现效果 程序人生&#xff0c;精彩抢先看 1、前言 最近个人在做开发的时候&#xff0c;需要实现前端的Html页面分页。由于好一段时间…

HTML分页插件功能实现

分页功能实现案例展示如下&#xff1a; 1.先引入css样式和jQuery&#xff0c;再引入分页插件toPage.js&#xff0c;谨记顺序不能乱 <link rel"stylesheet" href"css/toPage.css"> <script src"script/jquery.min.js"></script&…

java html页面设计_Java实战之html分页设计

分页设计 原则 由于每次要将对应页数所需要的数据在jsp或者html等文件中显示出来&#xff0c;所以要将这些数据封装在一个javabean中 &#xff0c;后台都将查询到的数据导入到对应的javabean对象实例中&#xff0c;我们再将该对象存入request作用域&#xff0c;html或者jsp页面…

html分页效果怎么加,CSS 分页效果制作实例教程

这个教程也包含有实现Flickr、Digg式的简洁分页样式的HTML/CSS代码&#xff0c;随时可以应用于你的WEB项目中。 Update as March 17, 2008:My friends Simone Saveri solved some issuse with IE6 and IE7. Download this tutorial (original) Download this tutorial (Simone …

分页阅读html,html分页

1 (function($, window, document, undefined) { 2 //定义分页类 3 function Paging(element, options) { 4 this.element element; 5 //传入形参 6 this.options { 7 pageNo: options.pageNo||1, 8 totalPage: options.totalPage, 9 totalSize:options.totalSize, 10 callba…

JS实现前端分页

一、HTML部分 <!doctype html> <html> <head><meta charsetutf-8><script src"js/jquery.js"></script><style type"text/css">a{text-decoration: none;}table {border-collapse:collapse;width: 100%;font-s…

html中的分页条怎么写,html如何制作分页

一般的制作页面都会使用到分页&#xff0c;那么你知道分页功能是怎么实现的吗&#xff1f;让我们一起来学习一下html如何制作分页吧。 新建html页面。如图&#xff1a; 在html页面找到body标签&#xff0c;在body标签里新建一个div标签&#xff0c;然后在div标签中新建a标签&am…

html分页功能

&#xff08;代码来源 http://www.xwcms.net/&#xff0c;非原创&#xff01;&#xff09; 1、导入css、js文件 2、根据index.html中的页面进行相应的修改 主要函数实现&#xff08;其中&#xff0c;#exampletable为需要分页的table的id&#xff09; <script type"te…

HTML+CSS实现网页分页页码

直角分页页码实现 <!doctype html> <html> <head> <meta charset"utf-8"> <title>直角分页页码</title> <style type"text/css">/*设置 a 标签的css样式*/.page-normal a{border: 1px solid #ff6500;padding: …

前端 利用html实现分页切换效果

本篇文章主要要实现的功能效果如下&#xff1a; 包含首页 尾页 上一页 下一页 总计的页数以及总计的条数还有跳转的功能 整体思想&#xff1a;先定位一个中心页 上一页、下一页就是根据定位中心页然后加减就可以实现 首页就是要根据一次要展示几页&#xff0c;然后分别展示…

HTML实现分页功能

思路 主要是通过display: block和display: none来实现页面的切换。 将每个页面用一个div包起来&#xff0c;默认第一个页面的样式是display: block&#xff0c;其他页面的样式是display: none&#xff0c;然后通过JavaScript获取鼠标点击事件来隐藏其他页面&#xff0c;显示当…

html+js实现分页功能

1、分页功能实现效果如下&#xff1a; 2、代码如下 <!DOCTYPE html > <html> <head><title> 消息呈现 </title><link rel"icon" href"picture.ico" type"image/x-icon" /><script src"../js/jquer…

阿里云服务器Windows系统搭建Java Web网站教程

一、首先首先搜索阿里云官网&#xff0c;购买服务器 二、 打开控制台-云服务器ECS-实例&#xff0c;先停止运行&#xff0c;再选择更换系统盘&#xff0c;选择带有jdk和tomcat和MySQL的系统镜像安装。 三、 待服务器重启后&#xff0c;打开Windows自带的远程连接软件&#xff0…

关于阿里云Centos服务器搭建Java网站不能访问的问题

转载请注明出处&#xff1a;http://blog.csdn.net/l1028386804/article/details/73864773 首先阿里云提供的手册是没问题的 手工搭建 然后我在地址栏输入服务器地址之后总是提示无法访问&#xff01; 输入命令 netstat -tunlp&#xff0c;80端口确实是在监听&#xff08;这…

【阿里云】基于ECS搭建Java Web开发环境

点击右侧 切换至Web Terminal&#xff0c;执行以下命令&#xff0c;查看yum源中JDK版本。 yum list java* 执行以下命令&#xff0c;使用yum安装JDK1.8。 yum -y install java-1.8.0-openjdk* 执行以下命令&#xff0c;查看是否安装成功。 java -version 如果显示如下图内…

一、申请阿里云服务器及搭建Java开发环境教程 -- 购买阿里云服务器(1)

注&#xff1a;云服务器开发环境如下 &#xff08;CentOS JDK1.7 Mysql ZooKeeper Redis Nginx maven中央库Nexus&#xff09; 一、购买阿里云服务器 1、百度搜索阿里云官网或地址栏输入 https://www.aliyun.com 进入阿里云官网&#xff0c;登录或注册进入&#xff0c;…

阿里云搭建网站

首次搭建个人小站&#xff0c;建议购买域名和服务器到知名商家&#xff0c;比如阿里云&#xff0c;百度云等。因为阿里云绑定了个人淘宝账号&#xff0c;所以成为本人首选&#xff0c;嘿嘿。 购买域名。点击打开http://www.aliyun.com/ 链接地址。并点击右上角的“万网”标记。…

阿里云服务器部署javaweb

1.首先购买服务器和域名 服务器类型选择&#xff1a;云服务器ecs&#xff08;不要选择突发性能型&#xff09;&#xff0c;域名自便&#xff08;注&#xff1a;域名解析需要备案&#xff0c;此类型服务器要求有效期大于三个月才可以备案&#xff09;。 服务器设置&#xff1a…

教你从0开始部署阿里云服务器,阿里云服务器搭建网站教程

教你从0开始部署阿里云服务器&#xff0c;阿里云服务器部署网站的办法&#xff0c;阿里云搭建项目的办法&#xff0c;阿里云服务器搭建网站教程 1.购买 登录官网点击下面链接&#xff1a;阿里云注册链接 查看云服务器购买列表&#xff0c;购买时选择地区、操作系统镜像等&…

阿里云搭建java web

1.首先进入ECS实例&#xff0c;开启实例并且使用XShell连接 2.安装JDK 执行以下命令&#xff0c;查看yum源中JDK版本。 yum list java*执行以下命令&#xff0c;使用yum安装JDK1.8。 yum -y install java-1.8.0-openjdk*执行以下命令&#xff0c;查看是否安装成功。 java …