<div class="divBody">
<div class="divContent">
<!--上一页 -->
<c:choose><!-- page是你通过查询出来当前页得所有的对象数据 pagenum是当前页 如果=1 那么(上一页)的没有连接的 显示出来 -->
<c:when test="${page.pagenum eq 1 }">
<span class="spanBtnDisabled">上一页</span>
</c:when>
<!-- 否则显示有链接的 上一页 那么连接传值就(当前页-1)就好了 -->
<c:otherwise>
<a href="你要访问的servlet或者action&pagenum=${pager.pagenum-1}" class="aBtn bold">上一页</a>
</c:otherwise>
</c:choose> <!--
我们需要计算页码列表的开始和结束位置,即两个变量begin和end
计算它们需要通过当前页!
下面试一页面只显示6页为依据 当然你想显示多少就显示多少 可以自己设置
1. 总页数不足6页-> begin=1, end=最大页
2. 通过公式设置begin和end,begin=当前页pagenum-2,end=当前页pagrnum+3
3. 如果begin<1,那么让begin=1,end=6
4. 如果end>最大页, 让begin=总页数-5, end=总页数 总页数:page.pageCount
当前页:page.pagenum
-->
<c:choose>
<!-- 因为我们在页面上只显示6页的数据 如果总页数小于6也的话 -->
<c:when test="${总页数 <= 6 }">
<c:set var="begin" value="1"/><!-- 设置begin的值是1 -->
<c:set var="end" value="总页数"/><!-- 设置end的值是总页数 -->
</c:when>
<!-- 否则做以下事情 -->
<c:otherwise>
<!-- 如果总页数大于6的话 在这里我们假设总页数为7页 那么页面显示为1 2 3 4 5 6 ...
我们来说一下几种发生的情况
1.当前页 如果是第3页得话 bengin就是3-2=1 end就是3+3=6 那么页面显示就是 1 2 3 4 5 6 ...
2.当前页 如果是第4页得话 begin就是4-2=2 end就是4+3=7 那么页面显示就是 2 3 4 5 6 7 没有省略号了 1和...消失
3.当前页 如果是第5,6,7页得话 begin就是5-2=3 6-2=4 7-2=5 end就是5+3=8 6+3=9 7+3=10 但是最大页是7没有到8 9 10 就会出下以下判断 页面显示 2 3 4 5 6 7
4.当前页 如果是第1,2页得话 begin就是1-2=-1 和2-2=0 end就是1+3=4 2+3=5 但是开始页begin必须是1 满足不了情况 就会出下以下判断 页面显示 1 2 3 4 5 6 ...
-->
<c:set var="begin" value="${当前页-2 }"/>
<c:set var="end" value="${当前页 + 3}"/>
<!-- 如果begin是-1和0的话 小于1 那么就设置开始页begin为1 结束页end为6 页面显示1 2 3 4 5 6 ... -->
<c:if test="${begin < 1 }">
<c:set var="begin" value="1"/>
<c:set var="end" value="6"/>
</c:if>
<!-- 如果结束end页 大于了总页数 也就是上面的第三种情况 end结束页为8 9 10的话超过总页数7 那么设置开始bengin为 当前页就是总页数7-5=2 -->
<!-- 结束就是总页数 页面显示为 2 3 4 5 6 7 -->
<c:if test="${end > 总页数 }">
<c:set var="begin" value="${总页数-5 }"/>
<c:set var="end" value="${总页数 }"/>
</c:if>
</c:otherwise>
</c:choose> <!-- 获取到begin和end的值循环 -->
<c:forEach begin="${begin }" end="${end }" var="i">
<c:choose>
<c:when test="${i eq 当前页 }">
<span class="spanBtnSelect">${i }</span><!-- 如果i等于当前页 那就不给链接 -->
</c:when>
<c:otherwise>
<a href="${你访问的action或者servlet }&pc=${i}" class="aBtn">${i }</a><!-- 否则就给链接 -->
</c:otherwise>
</c:choose>
</c:forEach> <!-- 计算begin和end -->
<!-- 如果总页数<=6,那么显示所有页码,即begin=1 end=${总页数} -->
<!-- 设置begin=当前页码-2,end=当前页码+3 -->
<!-- 如果begin<1,那么让begin=1 end=6 -->
<!-- 如果end>最大页,那么begin=最大页-5 end=最大页 --> <!-- 如果结束页小于总页数7 那么显示... -->
<!-- 显示点点点 --->
<c:if test="${end < 总页数 }">
<span class="spanApostrophe">...</span>
</c:if> <!--下一页 -->
<c:choose>
<c:when test="${当前页 eq 总页数 }"><span class="spanBtnDisabled">下一页</span></c:when>
<c:otherwise><a href="${你要访问的action和servlet }&pagenum=${当前页+1}" class="aBtn bold">下一页</a></c:otherwise>
</c:choose> <!-- 共N页 到M页 -->
<span>共${page.pageCount }页</span>
<span>到</span>
<input type="text" class="inputPageCode" id="pageCode" value="${当前页 }"/>
<span>页</span>
<a href="javascript:_go();" class="aSubmit">确定</a>
</div>
</div>

java web 前端页面的分页逻辑的更多相关文章

  1. Java Web 前端高性能优化(二)

    一.上文回顾 上回我们主要从图片的合并.压缩等方面介绍前端性能优化问题(详见Java Web 前端高性能优化(一)) 本次我们主要从图像BASE64 编码.GZIP压缩.懒加载与预加载以及 OneAP ...

  2. JAVA WEB 用servlet实现分页,思路比较清晰和简单。

    JAVA WEB 用servlet实现分页,思路比较清晰和简单.借鉴了其他大佬的思路.特别感谢. 是我第一次发表博客,如果有什么错误,欢迎大家指出!,谢谢 一.思路分析 前台一定是有类似这种的界面 点 ...

  3. web前端页面项目经验总结

    项目时间:2016年4月5日--4月9日项目名称:阿七果子园web前端页面项目内容:    1.HTML5+CSS+JavaScript(banner+timer)+JQuery(small_bann ...

  4. 基于.net EF6 MVC5+WEB Api 的Web系统框架总结(1)-Web前端页面

    本 Web 系统框架基于C# EF6+MVC+WebApi的快速应用开发平台.本节主要介绍Web前端页面设计与实现.Web前端页面主要分为普通列表页面.树状导航列表页面.普通编辑页面.数据导入页面.向 ...

  5. Web前端页面的浏览器兼容性测试心得(二)搭建原汁原味的IE8测试环境

    如果你做的页面被老板或PM要求兼容IE8,你就值得同情了.IE8不支持HTML5,在2017年的前端界,开发者不涉及HTML5标准简直寸步难行.然而,有一个可怕的事实客观存在,那就是IE8是Win7系 ...

  6. web前端页面优化——个人见解

    web前端页面优化,我们从JavaScript.css.html这3个方面说下,我的见解,希望大神们能有刚好优化方法,一起探讨. 一.  有关javascript方面 优化见解. 1. 首先举个例子: ...

  7. Web 前端页面性能监控指标

    Web 前端页面性能监控指标 性能监控 / 性能指标 / 性能优化 白屏时间计算 FCP 白屏时间:从浏览器输入地址并回车后到页面开始有内容的时间: 首屏时间计算 FMP 首屏时间:从浏览器输入地址并 ...

  8. Java Web 前端高性能优化(一)

    Web 发展的速度让许多人叹为观止,层出不穷的组件.技术,只需要合理的组合.恰当的设置,就可以让 Web 程序性能不断飞跃.所有 Web 的思想都是通用的,它们也可以运用到 Java Web.这一系列 ...

  9. Java Web 前端资源文件的路径问题

    WEB-INF是Java Web应用的安全目录,在部署时用于存放class文件.项目用到的库(jar包).Java Web应用的配置文件web.xml. 浏览器不能访问此目录下的资源,比如在WEB-I ...

随机推荐

  1. Django 安全策略的 7 条总结!

    Florian Apolloner 发言主题为 Django 安全,其中并未讨论针对 SSL 协议的攻击--因为那不在 Django 涉及范围内.(如感兴趣可参考 https://www.ssllab ...

  2. POJ 2750 Potted Flower(线段树的区间合并)

    点我看题目链接 题意 : 很多花盆组成的圆圈,每个花盆都有一个值,给你两个数a,b代表a位置原来的数换成b,然后让你从圈里找出连续的各花盆之和,要求最大的. 思路 :这个题比较那啥,差不多可以用DP的 ...

  3. Java 构造器 一道构造器调用子类重载方法的题目

    构造器中不能new本类对象,否则进入死循环. 构造器没有返回值,也没有void修饰. 使用关键字super可以调用父类的构造器,而且这一句必须放在第一句的位置,否则无法编译. 题目: 请写出以下程序的 ...

  4. ANDROID_MARS学习笔记_S05_004_过滤杂质,得到真正的加速度

    一.简介 二.代码1.java (1)MainActivity.java import android.app.Activity; import android.content.Context; im ...

  5. Markdown各种小问题汇总

    如何分割Quote? How can I write two separate blockquotes in sequence using markdown? > Imagination is ...

  6. perl 对象

    唯一标识: 很明显,一个%employee 是不够的,每个雇员都要求有一个唯一标识和他或她自己的属性集合. 你可以动态的分配这个数据结构,也可以返回一个指向局部数据结构的引用 Vsftp:/root/ ...

  7. ARM学习笔记7——乘法指令

    ARM乘法指令完成两个数据的乘法,两个32位二进制数相乘的结果是64位的4积. 其中: 1.“RadHi:RdLo”是由RdHi(最高有效32位)和RdLo(最低有效32位)链接形成的64位数,“[3 ...

  8. HDOJ/HDU 1161 Eddy's mistakes(大写字母转换成小写字母)

    Problem Description Eddy usually writes articles ,but he likes mixing the English letter uses, for e ...

  9. [CODEVS3641]上帝选人

    题目描述 Description 世界上的人都有智商IQ和情商EQ.我们用两个数字来表示人的智商和情商,数字大就代表其相应智商或情商高.现在你面前有N个人,这N个人的智商和情商均已知,请你选择出尽量多 ...

  10. 【转】【阮一峰的网络日志】Git 使用规范流程

    作者: 阮一峰 日期: 2015年8月 5日 团队开发中,遵循一个合理.清晰的Git使用流程,是非常重要的. 否则,每个人都提交一堆杂乱无章的commit,项目很快就会变得难以协调和维护. 下面是Th ...