分页显示的功能实现:

  • 一、分页显示无处不在
    • 意义:
  • 二、前期准备
    • (1)jar包
    • (2)头部标签
  • 三、具体实现分析
    • 1. 实现:首页上一页
    • 2. 实现:末页下一页
    • 3.实现:输入页面跳转
    • 4. 实现:显示 1 2【3】4 5,多页面选项
      • |-- 如果总页码小于等于 5 的情况,页码的范围是:`1-总页码`
      • |-- 如果总页码大于5,那么就需要分情况讨论
  • 四、总的分析

一、分页显示无处不在


意义:

实际中不会将所有数据一起显示出来,加载费时,效率也低,所以需要考虑数据的分页显示


二、前期准备

(1)jar包


(2)头部标签

<%@ taglib prefix="C" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>

三、具体实现分析

1. 实现:首页上一页

通过超链接,跳转到servlet,并且传递pageNo来实现
<c:if test="${requestScope.page.pageNo>1}"><a href="manager/bookServlet?action=page&pageNo=1">首页</a><a href="manager/bookServlet?action=page&pageNo=${requestScope.page.pageNo-1}">上一页</a>
</c:if>

2. 实现:末页下一页

<c:if test="${requestScope.page.pageNo<requestScope.page.pageTotal}"><a href="manager/bookServlet?action=page&pageNo=${requestScope.page.pageNo+1}">下一页</a><a href="manager/bookServlet?action=page&pageNo=${requestScope.page.pageTotal}">末页</a>
</c:if>

3.实现:输入页面跳转

 通过绑定单击事件,响应跳转servlet调用page方法并且传递pageNo实现
$("#inputbtn").click(function(){var pageNumber = $("#pn_input").val();location.href ="${pageScope.basePath}manager/bookServlet?action=page&pageNo="+pageNumber;
});

4. 实现:显示 1 2【3】4 5,多页面选项

|-- 如果总页码小于等于 5 的情况,页码的范围是:1-总页码


<c:when test="${requestScope.page.pageTotal<=5}"><%--循环输出这些页码--%><c:forEach begin="1" end="${requestScope.page.pageTotal}" var="i"><%--如果是当前页面,则显示【当前页码】--%><c:if test="${i == requestScope.page.pageNo}">【${i}】</c:if><%--如果不是当前页码则直接显示数字,并加上超链接实现可以跳转的功能--%><c:if test="${i != requestScope.page.pageNo}"><a href="manager/bookServlet?action=page&pageNo=${i}">${i}</a></c:if></c:forEach>
</c:when>

|-- 如果总页码大于5,那么就需要分情况讨论

   |-- 开始前3个,显示1-5|-- 最后3个页码,显示(Total-4)-Total|-- 之外,始终保持当前页码在中间,,显示(当前页码-2)-(当前页码+2)
<c:when test="${requestScope.page.pageTotal>5}"><c:choose><%--页码在前三,显示1-5--%><c:when test="${requestScope.page.pageNo<=3}"><c:forEach begin="1" end="5" var="i"><%--如果是当前页面,则显示【当前页码】--%><c:if test="${i == requestScope.page.pageNo}">【${i}】</c:if><%--如果不是当前页码则直接显示数字,并加上超链接实现可以跳转的功能--%><c:if test="${i != requestScope.page.pageNo}"><a href="manager/bookServlet?action=page&pageNo=${i}">${i}</a></c:if></c:forEach></c:when><%--页码在后三,显示(Total-4)-Total--%><c:when test="${requestScope.page.pageNo > requestScope.page.pageTotal-3}"><c:forEach begin="${requestScope.page.pageTotal-4}" end="${requestScope.page.pageTotal}" var="i"><%--如果是当前页面,则显示【当前页码】--%><c:if test="${i == requestScope.page.pageNo}">【${i}】</c:if><%--如果不是当前页码则直接显示数字,并加上超链接实现可以跳转的功能--%><c:if test="${i != requestScope.page.pageNo}"><a href="manager/bookServlet?action=page&pageNo=${i}">${i}</a></c:if></c:forEach></c:when><%--其余其他情况,显示(当前页码-2)-(当前页码+2)--%><c:otherwise><c:forEach begin="${requestScope.page.pageNo-2}" end="${requestScope.page.pageNo+2}" var="i"><%--如果是当前页面,则显示【当前页码】--%><c:if test="${i == requestScope.page.pageNo}">【${i}】</c:if><%--如果不是当前页码则直接显示数字,并加上超链接实现可以跳转的功能--%><c:if test="${i != requestScope.page.pageNo}"><a href="manager/bookServlet?action=page&pageNo=${i}">${i}</a></c:if></c:forEach></c:otherwise></c:choose></c:when>

四、总的分析

注意:这并不是完整的代码,只是分析的思路部分


|-- 分页显示的功能:实际中不会将所有数据一起显示出来,加载费时,效率也低,所以需要考虑分页显示分页内容:pageNo 需要知道当前页码pageTotal 需要计算总页码pageTotalCount 需要知道数据库中图书总记录数pageSize 需要设置每页显示数量Items  需要获取当前页图书数据javaBean:Page类DAO部分:BookDAO里面新增方法,新增测试查询总记录数public Integer queryTotalCount() {String sql = "SELECT COUNT(*) FROM t_book;";Number number = (Number) querySingleValue(sql);return number.intValue();}查询当前页面的图书数据public List<Book> queryPageItems(Integer begin,Integer pageSize) {String sql = "SELECT id,bookname,author,bookprice,sale,save,img_path FROM t_book LIMIT ?,?;";List<Book> books = queryList(Book.class, sql, begin,pageSize);return books;}2)分页模型 Page 的抽取(当前页数,总页数,总记录数,当前页数据,每页记录数)Service部分,新增page()方法方法体内调用DAO,得到数据库数据,将总记录数、总页码数、当前页面数据打包成page 对象这里稍微有点难理解,因为之前的Book都是直接调用DAO,就实现增删查改的操作。Servlet部分,新增page部分,获取用户交互页面的信息,调用service实现功能获取当前页码、页面显示数量pagesize传递显示数据4)首页、上一页、下一页、末页实现通过超链接,跳转到servlet,并且传递pageNo来实现<c:if test="${requestScope.page.pageNo>1}"><a href="manager/bookServlet?action=page&pageNo=1">首页</a><a href="manager/bookServlet?action=page&pageNo=${requestScope.page.pageNo-1}">上一页</a></c:if><c:if test="${requestScope.page.pageNo<requestScope.page.pageTotal}"><a href="manager/bookServlet?action=page&pageNo=${requestScope.page.pageNo+1}">下一页</a><a href="manager/bookServlet?action=page&pageNo=${requestScope.page.pageTotal}">末页</a></c:if>5)分页模块中跳转到指定页数功能实现通过绑定单击事件,响应跳转servlet调用page方法并且传递pageNo实现$("#inputbtn").click(function(){var pageNumber = $("#pn_input").val();location.href ="${pageScope.basePath}manager/bookServlet?action=page&pageNo="+pageNumber;});6)分页模块中,页码 1,2,【3】,4,5 的显示,要显示 5 个页码,并且页码可以点击跳转如果总页码小于等于 5 的情况,页码的范围是:1-总页码<c:when test="${requestScope.page.pageTotal<=5}"><%--循环输出这些页码--%><c:forEach begin="1" end="${requestScope.page.pageTotal}" var="i"><%--如果是当前页面,则显示【当前页码】--%><c:if test="${i == requestScope.page.pageNo}">【${i}】</c:if><%--如果不是当前页码则直接显示数字,并加上超链接实现可以跳转的功能--%><c:if test="${i != requestScope.page.pageNo}"><a href="manager/bookServlet?action=page&pageNo=${i}">${i}</a></c:if></c:forEach></c:when>如果总页码大于5,那么就需要分情况讨论|-- 开始前3个,显示1-5|-- 最后3个页码,显示(Total-4)-Total|-- 之外,始终保持当前页码在中间,,显示(当前页码-2)-(当前页码+2)<c:when test="${requestScope.page.pageTotal>5}"><c:choose><%--页码在前三,显示1-5--%><c:when test="${requestScope.page.pageNo<=3}"><c:forEach begin="1" end="5" var="i"><%--如果是当前页面,则显示【当前页码】--%><c:if test="${i == requestScope.page.pageNo}">【${i}】</c:if><%--如果不是当前页码则直接显示数字,并加上超链接实现可以跳转的功能--%><c:if test="${i != requestScope.page.pageNo}"><a href="manager/bookServlet?action=page&pageNo=${i}">${i}</a></c:if></c:forEach></c:when><%--页码在后三,显示(Total-4)-Total--%><c:when test="${requestScope.page.pageNo > requestScope.page.pageTotal-3}"><c:forEach begin="${requestScope.page.pageTotal-4}" end="${requestScope.page.pageTotal}" var="i"><%--如果是当前页面,则显示【当前页码】--%><c:if test="${i == requestScope.page.pageNo}">【${i}】</c:if><%--如果不是当前页码则直接显示数字,并加上超链接实现可以跳转的功能--%><c:if test="${i != requestScope.page.pageNo}"><a href="manager/bookServlet?action=page&pageNo=${i}">${i}</a></c:if></c:forEach></c:when><%--其余其他情况,显示(当前页码-2)-(当前页码+2)--%><c:otherwise><c:forEach begin="${requestScope.page.pageNo-2}" end="${requestScope.page.pageNo+2}" var="i"><%--如果是当前页面,则显示【当前页码】--%><c:if test="${i == requestScope.page.pageNo}">【${i}】</c:if><%--如果不是当前页码则直接显示数字,并加上超链接实现可以跳转的功能--%><c:if test="${i != requestScope.page.pageNo}"><a href="manager/bookServlet?action=page&pageNo=${i}">${i}</a></c:if></c:forEach></c:otherwise></c:choose></c:when>

JSP+JSTL+EL表达式,实现web页面的页面跳转功能(上一页下一页首页末页页面跳转)相关推荐

  1. Javaweb8==未实现前后端分离的列表展示、新增、删除、修改功能。 servlet(逻辑处理,封装数据进域对象,转发到jsp)+jsp(el表达式获取域对象中的数据+JSTL替换if for)。

    最终环境配置: IDEA2021+JDK8+mysql connector java5+Mysql5+mybatis3.5:从数据库取出数据. +(servlet+jsp+el表达式jstl):ser ...

  2. JSP 中EL表达式用法详解

    EL 全名为Expression Language EL 语法很简单,它最大的特点就是使用上很方便.接下来介绍EL主要的语法结构: ${sessionScope.user.sex} 所有EL都是以${ ...

  3. idea修改java和jsp不起作用_使用IDEA编写jsp时EL表达式不起作用的问题及解决方法...

    在使用IDEA开发maven+springMVC项目时遇到不加载EL表达式的问题,怎么处理呢?下面小编给大家带来了实现代码,一起看看吧 加载如下JSP代码: Title ${lists.usernam ...

  4. 【JSP】EL表达式

    EL表达式 EL表达式干什么用的? EL表达式的使用 面试题 如何输出对象属性值? 域中取数据注意事项 EL表达式的空处理 如何从Map集合中取数据 如何从数组或者List集合中获取数据 局部忽略EL ...

  5. JSTL/EL表达式/Struts2标签/OGNL表达式

    文章目录 JSTL + EL表达式 Struts 标签 + OGNL表达式 JSTL + EL表达式 JSTL 只能用在 JSP 文件中,不可以在 XML 和 HTML 文件中使用,不可以用在 JS ...

  6. jsp中EL表达式不好使

    原因是:在默认情况下,Servlet 2.4 / JSP 2.0支持 EL 表达式. web.xml中默认是: <web-app> </web-app> 改为: <web ...

  7. JSP的EL表达式中除法取整

    这两天回头瞅了瞅JSP.稍微敲了点代码.碰到一个比较恶心的坑.做个笔记,说不定能帮助到大家. 遇到问题是: 在使用JSP的EL表达式时,两个从后端传过来的int数据(暂定 a =10 ,b =5).然 ...

  8. JSP(EL表达式+JSTL)

    目录 文章目录 前言 一.什么是JSP 二.JSP语法 (一).jsp模板元素 (二).jsp脚本表达式 (三).jsp脚本片段(小脚本) (四).jsp声明(成员变量) (五).jsp注释 (六). ...

  9. jsp java el表达式_jsp相关笔记,el表达式、jsp标签库(jstl)

    一.jsp基础部分 1.介绍 概念 JSP(Java Server Page),java服务器端页面,可以定义html标签,又可以定义java代码. 原理 JSP本质上就是一个Servlet 2.JS ...

  10. JSP中EL表达式无效的问题

    http://doujiang327.iteye.com/blog/231840 第一步: 首先确定你是否导入的JSTL包. 在项目上右键,Myeclipse-->Add JSTL Librar ...

最新文章

  1. Vue_双向绑定解析以及指令介绍
  2. Mysql练习_mysql练习题
  3. TiDB 架构及设计实现
  4. C++运行时候库操作概述和整个程序运行流程
  5. C++STL的string容器
  6. java基础—方法重载(overload)
  7. 支付宝封杀比特币,可以说是毫不留情!
  8. 寄云PaaS平台荣获“优秀创新项目奖”
  9. python wlsxwriter_python xlsxwriter模块的使用
  10. 怎么把文件夹名称提取到Excel?
  11. 如何从excel中删除奇数行或偶数行
  12. 制作席慕蓉的诗html,席慕容诗歌集
  13. PX4 Bootloader解析
  14. Using the GNU Compiler Collection 目录翻译
  15. php 验证 手机号码
  16. bga封装扇出过孔,用Allegro软件如何实现BGA封装的扇出?
  17. vivado报位置约束指令的critical warning
  18. VS Code || Visual Studio Code 修改、添加背景图片的方式
  19. 在一台服务器上搭多个网站的解决方案
  20. 分式化简结果要求_分式化简的结果为( )   A. B. C. D.——青夏教育精英家教网——...

热门文章

  1. 三菱PLC编程口通信上位机端报文和java示范代码
  2. MATLAB线性规划相关函数用法
  3. 最新的windows xp sp3序列号(绝对可通过正版验证)
  4. 金蝶KIS/K3各版本下载地址
  5. Windows Server 2019 如何安装IIS 服务
  6. AI语音克隆软件安装和使用教程
  7. 算法第四版 练习答案 1.4.1
  8. Android开机优化之调整Launcher的加载时间
  9. 天正电气lisp是什么文件_LSP文件扩展名 - 什么是.lsp以及如何打开? - ReviverSoft...
  10. 学生简单个人博客网页DW模板 简单HTML静态网页设计个人主页制作 大学生个人网站模板下载 网页作业个人主页制作