Java web 笔记 分页功能

实现Java Web项目分页功能 接触Java技术以来,项目中实现分页功能一直以来是一大纠结点。近日终归算是下定决心研究一下其中的原理了喽~~~本次主要研究分页功能实现原理,所以没有使用任何框架技术,通过简单的Servlet、jsp连接MySQL数据库来实现。一、准备工作:1. 在MySQL数据库中创建数据表,并添加足够分页的数据。2. 使用MyEclipse创建JavaWeb项目。3. 创建实体类、工具类、DAO、Service... 阅读详情

编辑器:idea
数据库:Oracle
浏览器:谷歌
要实现这种功能:带有模糊查询的分页
在这里插入图片描述
Oracle分页sql语句
select * from (select a.*,rownum myid from news a)b where myid between ? and ?;

每页最多展示的条数/总页数 : pageSize = 5;
当前页码 : pagelndex
每页开始的条数 : start
每页结束的条数 : end

公式:
页码 开始条数 结束条数
1 1=(页码-1)pageSize 5=当前页码每页最多展示的条数
2 6=(页码-1)pageSize 10=当前页码每页最多展示的条数
3 11=(页码-1)pageSize 15 =当前页码每页最多展示的条数

方法:1模糊查询和分页

	/**
	 * 带有模糊查询和分页的方法
	 * @param pageIndex 当前页码
	 * @param str 模糊查询关键字
	 * @return
	 * @throws Exception
	 */
	public List<News> query(int pageIndex,String str) throws Exception{
		int pageSize=5;
		int start =(pageIndex-1)*pageSize+1;//每页开始的条数
		int end =pageIndex * pageSize;//每页结束的条数
		listNews = new ArrayList<>();
		con=DBhelper.getcon();
		sql="select * from (select a.*,rownum myid from tb_news a where a.title like '%"+str+"%') b where myid between ? and ?";
		ps=con.prepareStatement(sql);
		ps.setInt(1,start);
		ps.setInt(2,end);
		rs=ps.executeQuery();
		while(rs.next()) {
			news=new News(rs.getInt("nid"),rs.getInt("sid"),rs.getString("title"),rs.getString("author"),rs.getString("summary"),rs.getString("content"),null);
			listNews.add(news);
		}
		DBhelper.obj(con, rs, ps);
		return listNews;
	}

方法2:查询总数据量:

	/**
	 * 求tb_news表里数据可展示的总页码
	 * @return
	 * @throws Exception
	 */
	public int getMaxPage(String str) throws Exception{
	/*
	计算总页数
	如果有11条
	3页
    总数据: rows
    页大小: pageSize=5
    最大页码:    maxPage
    maxPage=rows/pageSize
    if(rows%pageSize!=0){//有余数<pageSize
    maxPage++;//多加一页
    }

    10/5=2
    11/5=2
    怎么判断有余数
    if(11%5!=0){
    2++;
    }
	*/
		con=DBhelper.getcon();
		sql="select count(0) from tb_news where title like'%"+str+"%'";
		ps=con.prepareStatement(sql);
		rs=ps.executeQuery();
		if (rs.next()){
			maxPage= rs.getInt(1)/5;
			if (rs.getInt(1)%5!=0){
				maxPage++;
			}
		}
		DBhelper.obj(con, rs, ps);
		return maxPage;
	}

可以把获取的数据集合listNews报错到request作用域里面

session.setAttribute(“a”,“1”)
session.getAttribute(“a”)
request的语法和session一样并且都是返回object
request.setAttribute(“a”,“1”)
request.getAttribute(“a”)

区别:
session:
只要在有效期内它可以在页面随意跳转,与转发和重定向没有一点关系
request:

  1. 如果说从一个页面重定向到另一个页面如果使用重定向则获取不到数据,只有通过转发才能把数据带到下一个页面

  2. 如果通过重定向的话则会在重定向之前数据就会消失了

request:
优点:
如果往request里面保存数据它不会把数据一直传递下去,它的安全性高
比如在A.jsp重定向到B页面那就只有B页面能获取数据其他页面获取不到

package com.zking.servlet;

import com.zking.dao.NewsDao;
import com.zking.entity.News;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.List;

public class pagingServlet extends HttpServlet {
    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        doGet(req, resp);
    }

    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        try {
            //设置编码
            req.setCharacterEncoding("utf-8");
            resp.setContentType("text/html;charset=utf-8");
            //定义当前页面变量
            int pageIndex = 1;//默认展示第一页的数据
            //获取前台传来的页码变量
            String myPageIndex = req.getParameter("pageIndex");
            //把从前台获取的页码myPageIndex赋给当前页码pageIndex
            if (null!=myPageIndex){
                pageIndex=Integer.parseInt(myPageIndex);
            }
            //新闻dao类
            NewsDao nd = new NewsDao();
            //获取内置对象
            PrintWriter out = resp.getWriter();
            HttpSession session = req.getSession();

            //获取前台的模糊查询关键字
            String str = req.getParameter("str");
            if(null==str){
                str="";
            }
            //调用分页的方法
            List<News> listNews = nd.query(pageIndex,str);
            //把获取数据集合listNews 保存到request里面
            req.setAttribute("listNews", listNews);
            //把当前页码pageIndex保存到
            req.setAttribute("pageIndex",pageIndex);
            //把模糊查询关键字str传到前端
            req.setAttribute("str",str);
            //通过转发到主界面
            req.getRequestDispatcher("/admin/admin.jsp").forward(req, resp);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

JSP页面代码:

 		 <%--
            翻页:
                当点击翻页按钮的时候,跳转到加载数据的pagingServlet里面,并将页码变量传过去
        --%>
      <p align="center">
          <a href="<%=request.getContextPath()%>/pagingServlet.do?str=<%=str%>&pageIndex=1">首页</a>
          <a href="<%=request.getContextPath()%>/pagingServlet.do?str=<%=str%>&pageIndex=<%=pageIndex>1?-1:1 %>">上一页</a>
          当前页数:[<%=pageIndex%>/<%=maxPage%>]&nbsp;
          <a href="<%=request.getContextPath()%>/pagingServlet.do?str=<%=str%>&pageIndex=<%=pageIndex<maxPage?pageIndex+1:maxPage %>">下一页</a>
          <a href="<%=request.getContextPath()%>/pagingServlet.do?str=<%=str%>&pageIndex=<%=maxPage %>">末页</a>
      </p>

这样简单的分页就完成了

在Web开发中实现写一个简单的分页功能 如何去写一个分页的案例 在网页中我们经常会遇到需要在一页显示固定数量的信息然后在下一页同样显示固定数量的信息并用标签去链接到固定的页码,简称分页,这是我自己的理解。 分页的制作其实非常简单,几乎不需要用到思维逻辑,但是代码实现的过程对于新手来说比较考验一个功能的完整性,首先要能通过数据库在页面上正确的显示信息,才能根据分页去显示不同的信息。 本案例作为我研究过程中的一个小结,我采用MVC的方式详细... 阅读详情

相关推荐

Java Web学习笔记08:分页技术

文章目录 一、分页技术 1、软分页 2、硬分页 (1)MySQL分页方式:通过关键字LIMIT实现 (2)Oracle分页方式:通过ROWNUM来实现 二、案例演示:硬分页显示新闻列表 1、创建Web项目PagingNews 2、在WEB-INF目录里创建lib子目录,添加MySQL数据库驱动程序jar包 3、在web目录里创建META-INF目录,在里面创建数据源配置文件con...

howard2005的专栏 1338

jsp分页

分页:是数据展示的一种形式 为什么要分页:因为数据量太大,一页展示不完全,所有就用分页 sql语句: select * from (select a.*,rownum myid from news a ) b where myid between ? and ?"; 每页最多展示的条数/页大小:pageSize=5 当前页码:pagelndex 每页开始的条数:start=(pagelndex-1)*pageSize+1 每页结束的条数:end=pagelndex*pagelnd...

m0_67514201的博客 1118

web分页加模糊查询实例

简单的分页模糊查询mysql数据库的数据,用jsp,sevlet显示出来,.sql语句是创建数据表的

java 11.通用分页01

​ 思维导图: 1. PageBean 2. 后台 3. junit 4、视图层:(PageTag) 1、准备工作: 导入jar包: 2、建包建类: 2、utils包里的各个类,都有各自不同的作用: 连接数据库—DBHelper ​...

weixin_67780833的博客 421

camera 知识速查

本文总结了Camera开发中的常见问题排查方法和关键技术点。主要内容包括:I2C/MIPI不通的排查步骤、时序问题分析方法、Sensor/AF/Flash/PDAF的Bring Up流程、OTP调试方法、PDAF原理及调试、CTS/ITS问题解决思路、AE震荡解决方案、Systrace性能分析方法、Flicker产生原理、Tombstone问题定位等。还涉及V4L2框架解析、问题定位分层方法、Sensor Setting注意事项、时钟信号概念、第三方应用卡顿排查、大光圈概念、Monkey测试方法。

qq_41665131的博客 785

ANSYS Workbench接触分析实战:从算法选择到收敛难题破解

本文深入解析ANSYS Workbench接触分析的核心技术与实战技巧,涵盖四大接触算法选择、收敛难题破解秘籍及典型场景参数设置。通过实际案例演示如何优化接触刚度、pinball区域和非对称行为等关键参数,帮助工程师有效解决结构非线性问题,提升仿真效率和精度。

weixin_28705087的博客 361

JavaWeb - 模糊查询 + 分页

效果图 核心代码(12个一页) &lt;!-- 搜索 --&gt; &lt;form id="searchForm" method="post" action="/product/list.do"&gt; &lt;div class="search"&gt; &lt;input type="hidden" name="page&qu

3098

手把手教你用Wireshark抓包分析Profinet非周期通信(附实战案例)

本文详细解析了PROFINET非周期通信(RTA)的技术原理与实战应用,通过Wireshark抓包分析,揭示从PLC请求到驱动器响应的完整对话过程。涵盖实验环境搭建、关键配置步骤、典型参数访问流程及故障诊断案例,帮助工程师深入理解并优化工业网络通信性能。

Black的专栏 1050

javaWeb项目中分页和模糊查询技术

分页 需求: 登录成功后,展现全部时,出现分页. 思路: 前端 1 设置分页按钮,以及分页数据(页码,总页数,总条数) 2 设置分页请求,即点击上一页,下一页时发请求 后端 3 web.xml映射,映射到Servlet能接收请求 4 Dao查询分页数据 1 设置分页按钮,以及数据展现的位置 2 数据此时就需要展现 à 即登录成功查询全部展现时,就需要查出多少条数据,总共多少页 3 第一次登录成功,查询全部时,已经分...

weixin_45943192的博客 1392

WSL2部署Cadence Virtuoso IC25.1:Ubuntu 26.04排障实录

WSL2以轻量虚拟机结合完整Linux内核,为Windows桌面环境提供了原生级Linux运行能力,解决了传统虚拟机资源开销大、双系统切换低效的问题。对于依赖X11图形协议、FlexNet许可服务和特定动态库的EDA工具链而言,利用WSL2部署Linux发行版需要关注系统集成、显示通路与许可连通性。从技术原理看,图形层X Server的配置、动态库依赖的补齐以及license服务的主机名解析,共同构成EDA工具在WSL2中稳定运行的关键环节。在芯片设计场景中,设计工程师常需在Windows办公机与Linux

weixin_29597551的博客 214

京东运维面试题及参考答案

cgroup(Control Group)是 Linux 内核提供的一种可以限制、控制与分离一个进程组群的资源(如 CPU、内存、磁盘 I/O 等)的机制。通过 cgroup,可以为不同的进程或进程组分配特定的资源配额,实现资源的隔离和管理。比如,在一个服务器上运行多个容器时,可以使用 cgroup 来限制每个容器对 CPU 和内存的使用,防止某个容器占用过多资源而影响其他容器的运行。cgroup 还可以对进程进行优先级设置,确保关键进程能够优先获得资源。

大模型大数据攻城狮的专栏 1237

JavaWeb(分页)

1.分页显示的步骤: (1)确定每页显示的数据量 (2)计算显示的页码 (3)编写SQL语句 当数据多起来的时候 ,记得需要一个容器将它包装起来,所以大容量数据显示可以派上用场(这只是其中一种方式) 2.大容量数据显示特点: (1)以列表方式显示数据的特点 优势:数据能够按照指定格式显示,布局清晰 不受信息数量的限制 缺点:当数据量较多,页面显示不完全时,需要用户拖动页面才能浏览更多信息 那么大容量数据显示...

weixin_66202611的博客 4800

手把手教你学simulink(16.8)--基于Simulink的小波变换滤波器(Wavelet Transform Filter)项目

基于Simulink的小波变换滤波器(Wavelet Transform Filter)项目的详细实例介绍。这个项目将重点放在小波变换滤波器的设计、实现和仿真上,帮助你理解和应用小波变换滤波器在信号处理中的作用。

MHD0815的博客 534

Java Web分页功能详解

可以发现页面功能中需要用到的数据的:一个是页面中显示的数据,另一个是数据的总条数所有我们可以创建一个 Page 工具类备用:int start;// 开始数据的索引int count;// 每一页的数量int total;// 总共的数据量/**提供一个构造方法*/super();/**判断是否有上一页@return*//**判断是否有下一页@return*//**计算得到总页数@return*/// 假设总数是50,是能够被5整除的,那么就有10页。

2501_90230937的博客 1239

Codex 实战 Skills:如何用 Skill 让 AI 模拟人工点击,自动完成复杂的前端表单测试

本文介绍如何构建基于Selenium WebDriver的AI Agent技能,实现自动化UI测试流程。主要内容包括: 环境搭建:配置无头Chrome浏览器环境,使用WebDriver Manager自动管理驱动 核心技能开发:通过ID、CSS Selector、XPath等策略定位元素,实现显式等待机制 交互模拟:使用ActionChains模拟鼠标悬停等复杂操作 稳定性优化:解决异步加载问题,确保测试可靠性 Skill封装:将功能模块化,使AI能通过自然语言指令操作Web界面 该方案突破了传统自动化测试

yueyeguzhuo的专栏 150

S7-1200 G2移植旧版本S7-1200程序的具体方法示例

S7-1200 G2移植旧版本S7-1200程序的具体方法示例

Robot_PLC_HMI_Automation 1515

JAVA WEB -分页功能模板

序言 : 我们经常在网站上见过或者平常生活中自己就用过,当展示的页面数据过多时,我们都是分页查看。这样既方便又会降低视觉疲劳。今天这只菜鸟就写一个分页的demo,巩固一下这知识。 技术: je22,jdbc,jstl 数据库 :mysql 开发工具:eclipse,Navicat 设计思想:mvc设计模式 一:分页思想:一般的分页界面都是:尾页-&gt;上一页-&gt;显示的页数(比如1,2...

lfbcsdn博客 2134

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

java web项目分页代码_实现Java Web项目分页功能

接触Java技术以来,项目中实现分页功能一直以来是一大纠结点。近日终归算是下定决心研究一下其中的原理了喽~~~本次主要研究分页功能实现原理,所以没有使用任何框架技术,通过简单的Servlet、jsp连接MySQL数据库来实现。一、准备工作:1. 在MySQL数据库中创建数据表,并添加足够分页的数据。2. 使用MyEclipse创建JavaWeb项目。3. 创建实体类、工具类、DAO、Service...

weixin_42123296的博客 1217

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

java分页功能原理_Java Web -【分页功能】详解

分页简介分页功能在网页中是非常常见的一个功能,其作用也就是将数据分割成多个页面来进行显示。使用场景: 当取到的数据量达到一定的时候,就需要使用分页来进行数据分割。当我们不使用分页功能的时候,会面临许多的问题:客户端的问题: 如果数据量太多,都显示在同一个页面的话,会因为页面太长严重影响到用户的体验,也不便于操作,也会出现加载太慢的问题。服务端的问题: 如果数据量太多,可能会造成内存溢出,而且一次请...

weixin_33740988的博客 3247

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

Java Web -【分页功能】详解

分页简介 分页功能在网页中是非常常见的一个功能,其作用也就是将数据分割成多个页面来进行显示。 使用场景: 当取到的数据量达到一定的时候,就需要使用分页来进行数据分割。 当我们不使用分页功能的时候,会面临许多的问题: 客户端的问题: 如果数据量太多,都显示在同一个页面的话,会因为页面太长严重影响到用户的体验,也不便于操作,也会出现加载太慢的问题。 服务...

我没有三颗心脏的博客 1217

java web手写实现分页功能

现在很多流行的框架,都可以很快的把分页效果做出来,但是作为一名程序员你必须得知道手写分页的流程: 场景效果: 一、分页的思路 首先我们得知道写分页代码的思路,保持思路清晰,才能行云流水的去写代码,其实不管是在写什么代码,思路,思想特别重要,先想好再动手,就会事半功倍! 先来分析SQL语句实现 Select * from product limit 0 ,5 Select * f...

yechengchao的博客 7835

Java实现分页功能

什么是分页 我的理解就是将很多的数据把它分成一页一页的形式,就像书本一样将内容分成很多页来进行阅读,在很多的网页中都会有分页的功能比如:淘宝的商品显示页面,现在比较流行的各大网站都会有这个分页的功能。 pom.xml文件内容(这里只引入了分页插件的依赖) <!-- MyBatis 分页插件 --> <dependency> <groupId>com.github.pagehelper</groupId> <artifactId>

dengke1的博客 1625

Java Web分页功能详解(1),前端项目开发流程

今天的文章可谓是积蓄了我这几年来的应聘和面试经历总结出来的经验,干货满满呀!如果你能够一直坚持看到这儿,那么首先我还是十分佩服你的毅力的。所以看完之后,还是多多行动起来吧!可以非常负责地说,如果你能够坚持把我上面列举的内容都一个不拉地看完并且全部消化为自己的知识的话,那么你就至少已经达到了中级开发工程师以上的水平,进入大厂技术这块是基本没有什么问题的了。Web前端开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。**

qinglp的博客 886

Web开发之分页功能

你知道网页上的分页功能是如何实现的吗?

yifei_345678的博客 4175
上一篇: Java web笔记 jsp动态交互
下一篇: javabean&三层架构
内涵神仙
博客等级 码龄5年 19粉丝 27原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值