JavaWeb(分页)

2023-05-16

1.分页显示的步骤:

(1)确定每页显示的数据量

(2)计算显示的页码

(3)编写SQL语句

当数据多起来的时候 ,记得需要一个容器将它包装起来,所以大容量数据显示可以派上用场(这只是其中一种方式)

 2.大容量数据显示特点:

1)以列表方式显示数据的特点

        优势:数据能够按照指定格式显示,布局清晰

                   不受信息数量的限制

        缺点:当数据量较多,页面显示不完全时,需要用户拖动页面才能浏览更多信息

 那么大容量数据显示会降低用户体验度,有没有更好的方式呢?

这就得采用到分页实现批量数据的页面显示

分页显示在生活中随处可见

《如图所示》

 

 实现分页的步骤:

(1)获取总记录

(2)根据每页显示的记录与总记录计算总页数

《代码演示》

(count%pageSize ==0)?(count/pageSize):(count/pageSize+1);计算分页页码

public int getTotalPages(int count, int pageSize){
    	int totalpages =0; 
    	totalpages =
                      (count%pageSize ==0)?(count/pageSize):(count/pageSize+1);
    	return totalpages;
}

--分页的sql语句
--伪列:rownum 不能作用于大于符号以及between..and 把伪列-->明列(实列)=取别名 

--以emp表为例
--假设每页5条记录
--取第一页 

select * from(
       select a.*,rownum as rid from emp a where ename like '%a%'
) b where b.rid between 5 and 10

《代码演示》

提示:sql语句是先排序后编号  在需要分页的界面调用如下方法即可

public List<News> getPage(int pageIndex,int pageSize){
		List<News> ls = new ArrayList<News>();
		int a = (pageIndex-1)*pageSize+1;
		int b = pageIndex*pageSize;
		try {
			//jdbc连接数据库
			con = DBHelper.getCon();
			//定义sql 语句
			String sql = "select * from (\r\n" + 
					"select a.*,rownum as rid from(\r\n" + 
					"       select nid,ntitle,nauthor from tb_news order by nid desc\r\n" + 
					")a\r\n" + 
					")b where b.rid between ? and ?";
			//获得执行对象
			ps=con.prepareStatement(sql);
			
			//给占位符赋值
			ps.setInt(1, a);
			ps.setInt(2, b);
			//获得结果集
			rs = ps.executeQuery();
			
		} catch (Exception e) {
			e.printStackTrace();
		}finally {
			DBHelper.myClose(con, ps, rs);
		}
		return ls;
	}

获取当前页码

思路:获取显示页的页码

如果获取的页码为NULL,则设置当前页为首页

如果获取的页码不为NULL,则该页码即为当前页页码

《代码演示》

String currentPage = request.getParameter("pageIndex");//读取页码
//判断页码
if(currentPage == null){
     currentPage = "1";
}    
int pageIndex = Integer.parseInt(currentPage); //将当前页码赋值给变量进行后续的出传递

《分页的设置》

根据已确认的当前页,设置上页和下页

根据总页数设置首页和末页

《如图所示》

《 首页和末页的控制》

通过判断pageIndex变量实现首页末页的控制

String currentPage = request.getParameter("pageIndex");
if(currentPage == null){
       currentPage = "1";
}    
int pageIndex = Integer.parseInt(currentPage);
//对首页与末页进行控制
if(pageIndex < 1){
       pageIndex = 1;
}else if(pageIndex > totalpages){
       pageIndex = totalpages;
}

 

《 带模糊查询的分页》

      @param pageIndex 第几页
      @param pageSize 每页多少条记录
      @param title 关键字
      @return 新闻的集合

public List<News> getPage(int pageIndex,int pageSize,String title){
		List<News> ls = new ArrayList<News>();
		int a = (pageIndex-1)*pageSize+1;
		int b = pageIndex*pageSize;
		try {
			//jdbc连接数据库
			con = DBHelper.getCon();
			//定义sql 语句
			String sql = "select * from (\r\n" + 
					"select a.*,rownum as rid from(\r\n" + 
					"       select nid,ntitle,nauthor from tb_news where ntitle like '%"+title+"%' order by nid desc\r\n" + 
					")a\r\n" + 
					")b where b.rid between 5 and 10\r\n" + 
					"";
			//获得执行对象
			ps=con.prepareStatement(sql);
			
			//给占位符赋值
			ps.setInt(1, a);
			ps.setInt(2, b);
			//获得结果集
			rs = ps.executeQuery();
			
		} catch (Exception e) {
			e.printStackTrace();
		}finally {
			DBHelper.myClose(con, ps, rs);
		}
		return ls;
	}

调用方法即可

《如图所示》

 提示:此处一定要加上title,不然title就会为空值,因为title返回的是查询全部

 

 

 

 

 

 

 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

JavaWeb(分页) 的相关文章

  • [羊城杯 2020]A Piece Of Java

    羊城杯 2020 A Piece Of Java 文章目录 羊城杯 2020 A Piece Of Java 源码分析 从后往前测试 逐步写exp 构造DatabaseInfo类对象 InfoInvocationHandler 动态代理 序
  • JSP&EL表达式&MVC&三层结构综合案例

    文章目录 JSP 1 JSP 概述 2 JSP 快速入门 2 1 搭建环境 2 2 导入 JSP 依赖 2 3 创建 jsp 页面 2 4 编写代码 2 5 测试 3 JSP 原理 4 JSP 脚本 4 1 JSP 脚本分类 4 2 案例
  • Java的反射技术(Class类,Constructor类,Method类, Field类)

    Java编码时知道类和对象的具体信息 此时直接对类和对象进行操作即可 无需反射 如果编码时不知道类或者对象的具体信息 此时应该使用反射来实现 为什么要使用反射 反射就是把Java类中的各种成分映射成一个个的java对象 例如 一个类有 成员
  • servlet传json数据给前端

    重点 1 json数据的发送 后 2 json数据的提取 前 例如 servlet返回从session提取的当前用户信息给前端使用 1 前端不带数据发送axios给后端请求数据 用get axios method get url http
  • Cannot change version of project facet Dynamic Web Module to 2.5 错误

    问题 新建maven webapp项目后 出现Cannot change version of project facet Dynamic web module to 3 0或者2 5 分析 使用Maven新建Web项目时使用的是Artif
  • JavaWeb之HTML和CSS

    标签命令汇总 tr 行 td 单元格 b 加粗 font 字体标签 br 换行 a 超链接标签 ul 无序标签列表 ol 有序标签列表 li list ul 无序标签列表 href 设置链接地址 一 概述 1 B S软件结构 JavaSE中
  • 设计模式之六大原则

    设计模式之六大原则 转载 关于设计模式的六大设计原则的资料网上很多 但是很多地方解释地都太过于笼统化 我也找了很多资料来看 发现CSDN上有几篇关于设计模式的六大原则讲述的比较通俗易懂 因此转载过来 原作者博客链接 http blog cs
  • JSP、JSTL标签

  • Redis概述与安装

    Redis简介 首先 简单了解一下NoSQL Not only sql 不要错误的理解为 没有SQL 而是不仅仅是SQL NoSQL工具也是一种简易的数据库 它主要是基于内存的数据库 并提供一定的持久化功能 现在有很多这种技术如 memca
  • Shell中的幽灵王者—JAVAWEB 内存马 【认知篇】

    Goby社区第 21 篇技术分享文章 全文共 6700 字 预计阅读时间 17 分钟 自我介绍 大家好 我是 su18 无论是个人博客还是社区 已经很久没写技术文章了 原因有很多 时间 精力 心态等等 但在开源社区也算比较活跃 由于工作需要
  • Tomcat——IDEA & Eclipse部署Web项目

    目录 IDEA部署Web项目 IDEA配置Tomcat 部署web项目 IDEA与tomcat的相关配置 Eclipse部署Web项目 Eclipse配置Tomcat 部署web项目 IDEA部署Web项目 跳转到目录 一 IDEA配置To
  • idea中Java Web项目的访问路径问题

    说明 这里只以 servlet 为例 没有涉及到框架 但其实路径的基本原理和框架的关系不大 所以学了框架的同学如果对路径有疑惑的也可以阅读此文 项目结构 在 idea 中新建一个 Java Web 项目 项目的初始结构如下 不同版本的 id
  • Get,Post请求中文乱码问题有效解决方法

    对于做Java WEB项目同学来说 中文乱码问题是一个经常遇到而又非常头痛的问题 而最容易出现乱码的环节就是在浏览器向服务器发送请求的过程 至于出现乱码的原因不是本文的关注的重点 想了解的朋友可以参考 http zhaomin819111
  • 互联网 API 接口幂等性设计

    WEB 资源或 API 方法的幂等性是指一次和多次请求某一个资源应该具有同样的副作用 幂等性是系统的接口对外一种承诺 而不是实现 承诺只要调用接口成功 外部多次调用对系统的影响是一致的 幂等性是分布式系统设计中的一个重要概念 对超时处理 系
  • response实现文件下载(java)

    import javax servlet ServletException import javax servlet ServletOutputStream import javax servlet http HttpServlet imp
  • Spring容器和应用上下文理解

    有了Spring之后 通过依赖注入的方式 我们的业务代码不用自己管理关联对象的生命周期 业务代码只需要按照业务本身的流程 走啊走啊 走到哪里 需要另外的对象来协助了 就给Spring说 我想要个对象 于是Spring就很贴心的给你个对象 听
  • 浏览器发器POST请求

    浏览器按F12或打开开发者工具 在console 控制台 标签页下输入 fetch new Request http localhost 8080 power font getToken method POST headers Conten
  • mysql不是内部或外部命令,也不是可运行的程序 或批处理文件。

    安装Mysql后 当我们在window r中输入cmd中敲入mysql时会出现 Mysql 不是内部或外部命令 也不是可运行的程序或其处理文件 打开我的电脑在我的电脑右键中选择属性 然后单击选择高级系统设置 在系统属性的 高级 中选择环境变
  • 【JavaWeb】网络原理初识

    网络原理初识 计算机网络的历史 局域网和广域网 网络组件中的重要设备 网络通信基础 基本概念 协议分层 OSI七层模型 TCP IP五层 或四层 模型 封装和分用 发送方 接收方 三层转发和二层转发 计算机网络的历史 计算机最初是为了打仗而
  • GraphQL 实现原理,不要被表象骗了

    GraphQL 实现原理 及实例 GraphQL是一种用于API的查询语言和运行时环境 它提供了一种描述数据的方式 客户端可以根据需要进行精确地获取所需的数据 下面是GraphQL的实现原理 类型系统 Type System GraphQL

随机推荐

  • Linux Ubuntu下的文件IO介绍及实例应用(C语言)

    大家好 xff0c 我是练习编程时长两年半的个人练习生昆工第一ikun xff0c 昨天咋们说了标准IO xff0c 今天咋们来分享文件IO xff0c 以及一个很有趣的实例 xff0c 给图片加密 xff0c 使其无法打开 话不多说 xf
  • 输入年月日得出该天是星期几(C语言)

    大家好 xff0c 我是练习编程时长两年半的个人练习生昆工第一ikun xff0c 昨天因为在写Thoughtworkers的2018年笔试题 xff0c 所以没有更新 xff0c 今天就先把笔试题中的一个函数分享出来 xff0c 该函数可
  • Linux下的UDP服务器客户端的搭建(C语言实现)

    大家好 xff0c 我是练习编程时长两年半的个人练习生昆工第一ikun xff0c 昨天我们说了搭建TCP的服务器和客户端 xff0c 今天我们就来分享一下UDP的服务器和客户端搭建 UDP的特点是无连接 xff0c 多个客户端可以发送消息
  • 使用STL库list类实现单双向约瑟夫环问题(C++)

    目录 一 单向约瑟夫环 1 问题描述 2 list类函数用法 xff08 1 xff09 list构造 xff08 2 xff09 list iterator迭代器 xff08 3 xff09 list容量 xff08 4 xff09 li
  • 使用Qt制作个人计算器

    我们知道windows系统有自带的计算器 xff0c 那么我们也可以用Qt制作一款类似的个人计算器 xff0c 实现整数的加减乘除括号运算 xff0c 界面设计使用Qt xff0c 计算使用逆波兰算法 xff0c 下面我就来分享一下个人计算
  • 使用Qt制作简易的图片查看器

    我们知道windows系统有自带的图片查看器 xff0c 那么我们也可以用Qt制作一款类似的图片查看器 xff0c 实现图片的打开查看以及图片的翻页 xff0c 下面我就来分享一下图片查看器的制作方法 目录 一 描述 二 代码实现 1 头文
  • 计算机网络第二章总结

    目录 1 1物理层的基本概念 1 2数据通信的基础知识 1 2 1数据通信系统的模型 1 2 2信道的几个基本概念 常用的编码方式 1 2 3信道的极限容量 1 3物理层下面的传输媒体 1 3 1导引型传输媒体 1 双绞线 2 同轴电缆 3
  • 假溢出的解决策略

    假溢出 xff1a 在顺序队列中 xff0c 队列出队时并没有像线性表那样使后面的元素往前移 为了解决假溢出 xff0c 常用的方法是把队列想成一个首尾相接的环 xff0c 这种叫循环队列 在循环队列的入队和出队操作中 xff0c 用到了求
  • C++之lambda函数(匿名函数)

    lambda函数简介 lambda函数是C 43 43 11标准新增的语法 xff0c 也称为lambda表达式或匿名函数 lambda函数的特点是 xff1a 距离近 简洁 高效和功能强大 优点 声明式编程风格 xff1a 就地匿名定义目
  • 远程桌面基本原理

    远程桌面基本原理 远程桌面是一种技术 xff0c 它允许用户通过互联网或局域网远程访问另一台计算机的桌面 这种技术可以让用户在不同的地方使用同一台计算机 xff0c 或者在同一地方使用不同的计算机 远程桌面技术在现代计算机应用中发挥着重要的
  • C++之迭代器

    迭代器 C 43 43 中 xff0c 迭代器就是类似于指针的对象 xff0c 但比指针的功能更丰富 xff0c 它提供了对对象的间接访问 xff0c 每个迭代器对象代表容器中一个确定的地址 举个例子 xff1a void test vec
  • C++之类模板全特化和偏特化

    类模板 类模板是通用类的描述 xff0c 使用任意类型 xff08 泛型 xff09 来描述类的定义 使用类模板的时候 xff0c 指定具体的数据类型 xff0c 让编译器生成该类型的类定义 注意 xff1a 函数模板中可以不指定具体数据类
  • C++之完美转发、移动语义(forward、move函数)

    完美转发 1 在函数模板中 xff0c 可以将 自己的参数 完美 地转发 给其它函数 所谓完美 xff0c 即 不仅能准确地转发参数的值 xff0c 还能保证被转发参数的左 右值属性不变 2 C 43 43 11标准引入了右值引用和移动语义
  • C++之异常处理

    异常 异常是面向对象语言 处理错误的一种方式 当一个函数出现自己无法处理的错误时 xff0c 可以抛出异常 xff0c 然后输的直接或者间接调用者处理这个错误 语法 捕获全部的异常 try 可能抛出异常的代码 throw异常对象 catch
  • C++之原子操作(atomic)

    原子操作 所谓原子操作是指不会被线程调度机制打断的操作 xff1b 这种操作一旦开始 xff0c 就一直运行到结束 xff0c 中间不会有任何 context switch xff08 切换到另一个线程 xff09 原子操作是不可分割的 x
  • C++之RAII机制

    RAIIResource acquisition is initialization的缩写 xff0c 意思是 资源获取即初始化 xff0c 其核心思想是利用C 43 43 对象生命周期的概念来控制程序的资源 它的技术原理很简单 xff0c
  • VsCode反应较慢(vscode卡顿,反应慢)

    简述 xff1a 这几天敲代码的时候发现vscode反应好慢 xff0c 有时候更改个样式 xff0c 也是同样 xff0c 然后就开始找原因 xff0c 之前开的代码自动保存 xff0c Git Autorefresh Files Aut
  • 【C++教学】第一课——头文件,全局命名空间,主函数的介绍

    头文件 初学者肯定疑惑为什么每次打代码都要写一个所谓的头文件 xff08 如 xff1a iostream xff09 xff0c 因为你所用的 cout gt gt 34 hello world 34 就是这个 是在iostream里的东
  • JavaWeb02(js基本语法&表单提交方式)

    一 xff0c js基本语法 1 jsp是什么 xff1f 实际上jsp就是Servlet xff0c 是一种可以用来开发web资源的技术 2 jsp运行原理 xff1f jsp文件先翻译成 java xff0c 在将其编译成 class
  • JavaWeb(分页)

    1 分页显示的步骤 xff1a xff08 1 xff09 确定每页显示的数据量 xff08 2 xff09 计算显示的页码 xff08 3 xff09 编写SQL语句 当数据多起来的时候 xff0c 记得需要一个容器将它包装起来 xff0