分页设计(平时在表下面的栏框,有首页 | 上一页 | 下一页 | 尾页),下面代码带你实现

        分页设计的本质就是,分页查询,就是SQL语句当中的(select * from ? limit ? , ?),这里第一个?是所分页的那张表 ,第二个?从哪条开始,第三个?是在页面上想让这张表出现几条数据。

        下面先看一下分页所需要的两个函数。1.查询所有表的数据 2.获取当前页数据

   /**
     * 查询表中所有数据,返回进行渲染
     */
    public List<emp> selectAll(String sql) {
        ArrayList<emp> emps = new ArrayList<>();
        Connection conn = DbLink.getConn();
        try {
            PreparedStatement statement = conn.prepareStatement(sql);
            ResultSet resultSet = statement.executeQuery();
            while (resultSet.next()) {
                Integer id = resultSet.getInt("id");
                String name = resultSet.getString("name");
                String city = resultSet.getString("city");
                String country = resultSet.getString("country");
                emps.add(new emp(id, name, city, country));
            }
        } catch (SQLException e) {
            e.printStackTrace();
        }
        return emps;
    }

       /**
     * 获取当前页数据
     * @param start         偏移量
     * @param pageSize      规定每页的记录数
     * @return list         存放所有查询表当中的所有数据
     */
    public List<emp> QueryRecords(int start,int pageSize){
        Connection conn = DbLink.getConn();
        ArrayList<emp> list = new ArrayList<>();
        String sql = "select * from emp limit ?,?";
        try {
            PreparedStatement statement = conn.prepareStatement(sql);
            statement.setInt(1,start);
            statement.setInt(2,pageSize);
            ResultSet resultSet = statement.executeQuery();
            while (resultSet.next()){
                emp emp = new emp();
                int id = resultSet.getInt("id");
                String name = resultSet.getString("name");
                String city = resultSet.getString("city");
                String country = resultSet.getString("country");
                emp.setId(id);
                emp.setName(name);
                emp.setCity(city);
                emp.setCountry(country);
                list.add(emp);
            }
        } catch (SQLException e) {
            e.printStackTrace();
        }
        return list;
    }

 下面我们看jsp代码,如何去实现

<%@ page import="Dao.handleDb" %>
<%@ page import="Pojo.emp" %>
<%@ page import="java.util.List" %>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>分页设计</title>
</head>
<body>
<%
    handleDb handleDb = new handleDb();
    //1.规定每页的记录数
    int pageSize = 3;
    //2.总的sql记录条数 count
    List<emp> emps = handleDb.selectAll("select * from emp");
    int count = emps.size();
    //页的数量
    //3.计算总页数
    int pageCount = count % pageSize == 0 ? count / pageSize : count / pageSize + 1;
    //4.当前页
    Integer page1;
    if (request.getParameter("page1") == null) {
        page1 = 1;
    } else {
        page1 = Integer.valueOf(request.getParameter("page1"));
    }
    //sql=select * from emp limit start,pageSize;
    //5.计算偏移值
    int start = (page1 - 1) * pageSize;

    //6.获取当前页的数据
    List<emp> list = handleDb.QueryRecords(start, pageSize);
%>
<table cellspacing="0" border="1">
    <tr>
        <th>id</th>
        <th>姓名</th>
        <th>城市</th>
        <th>国家</th>
    </tr>
    <%
        for (int i = 0; i < list.size(); i++) {
    %>
    <tr>
        <td><%=list.get(i).getId()%>
        </td>
        <td><%=list.get(i).getName()%>
        </td>
        <td><%=list.get(i).getCity()%>
        </td>
        <td><%=list.get(i).getCountry()%>
        </td>
    </tr>
    <%
        }
    %>

</table>
    <%
        if (page1==1){
    %>
         <a>首页</a>
         <a>上一页</a>
         <a href=showList1.jsp?page1=<%=page1 + 1%>>下一页</a>
         <a href=showList1.jsp?page1=<%=pageCount%>>尾页</a>
    <%
        }else if (page1 == pageCount){
    %>
        <a href=showList1.jsp?page1=1>首页</a>
        <a href=showList1.jsp?page1=<%=page1 - 1%>>上一页</a>
        <a>下一页</a>
        <a>尾页</a>

    <%
        }else {
    %>
        <a href=showList1.jsp?page1=1>首页</a>
        <a href=showList1.jsp?page1=<%=page1 - 1%>>上一页</a>
        <a href=showList1.jsp?page1=<%=page1 + 1%>>下一页</a>
        <a href=showList1.jsp?page1=<%=pageCount%>>尾页</a>

<%
    }
%>
</body>
</html>

下面我面看下运行效果:

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/237260.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Linux系统vim,gcc,g++工具使用及环境配置,动静态库的概念及使用

Linux系统vim&#xff0c;gcc&#xff0c;g工具使用及环境配置&#xff0c;动静态库的概念及使用 1. Linux编辑器-vim的使用1.1 vim的基本概念1.2vim的基本操作1.3vim正常模式命令集1.4vim末端模式命令集1.5简单的vim配置 2.Linux编译器-gcc/g的使用2.1 准备阶段2.2gcc的使用2.…

Redis持久化机制 RDB 和 AOF 的选择

目录 一、Redis 的持久化 二、Redis 的持久化方式 Redis 提供了两种持久化的方式&#xff1a; RDB 介绍 RDB 的触发方式&#xff1a; AOF介绍 三、RDB 和 AOF 的选择 RDB 和 AOF 对比 1. 数据格式&#xff1a; 2. 恢复速度&#xff1a; 3. 数据丢失 4. 文件大小&…

这七款网工在线画拓扑工具,绝了!

你们好&#xff0c;我的网工朋友。 画拓扑图&#xff0c;绝对是网络工程师的基操。 上次给你来了篇手把手教你绘制拓扑图的好文&#xff0c;还没看过的先去看啊&#xff1a;《网络拓扑图怎么画最好&#xff1f;》。 关于画拓扑的工具&#xff0c;那就多了&#xff0c;直接用…

什么是 web 组态?web 组态与传统组态的区别是什么?

组态软件是一种用于控制和监控各种设备的软件&#xff0c;也是指在自动控制系统监控层一级的软件平台和开发环境。这类软件实际上也是一种通过灵活的组态方式&#xff0c;为用户提供快速构建工业自动控制系统监控功能的、通用层次的软件工具。通常用于工业控制&#xff0c;自动…

c++时间转换

获取当前时间字符串 std::string GetFormatTime() {time_t currentTime;time(&currentTime);tm* t_tm localtime(&currentTime);char formatTime[64] {0};snprintf(formatTime, 64, "%04d-%02d-%02d %02d:%02d:%02d", t_tm->tm_year 1900,t_tm->tm…

Python从入门到精通五:Python函数

函数介绍 学习目标&#xff1a; 快速体验函数的使用了解函数的作用 函数&#xff1a;是组织好的&#xff0c;可重复使用的&#xff0c;用来实现特定功能的代码段。 我们使用过的&#xff1a;input()、print()、str()、int()等都是Python的内置函数。 为什么要学习、使用函…

2023年团体程序设计天梯赛——总决赛题

F-L1-1 最好的文档 有一位软件工程师说过一句很有道理的话&#xff1a;“Good code is its own best documentation.”&#xff08;好代码本身就是最好的文档&#xff09;。本题就请你直接在屏幕上输出这句话。 输入格式&#xff1a; 本题没有输入。 输出格式&#xff1a; 在一…

使用 PyTorch FSDP 微调 Llama 2 70B

通过本文&#xff0c;你将了解如何使用 PyTorch FSDP 及相关最佳实践微调 Llama 2 70B。在此过程中&#xff0c;我们主要会用到 Hugging Face Transformers、Accelerate 和 TRL 库。我们还将展示如何在 SLURM 中使用 Accelerate。 完全分片数据并行 (Fully Sharded Data Paral…

java--集合基础

1.集合和数组的特点对比 集合类的特点 提供一种存储空间可变的存储模型&#xff0c;存储的数据容量可以发生改变 集合和数组的区别 共同点&#xff1a;都是存储数据的容器 不同点&#xff1a;数组的容量是固定的&#xff0c;集合的容量是可变的 2.ArrayList集合 ArrayLi…

解决 Element-ui中 表格(Table)使用 v-if 条件切换后,表格的列的筛选不显示了

解决方法 在每个需要使用 v-if 或 v-else 的 el-table-column 上增加 key 作为唯一标识&#xff0c;这样渲染的时候就不会因为复用原则导致列数据混乱了。关于key值&#xff0c;一般习惯使用字段名&#xff0c;也可随机生成一个值&#xff0c;只要具有唯一性就可以。

Centos7云服务器上安装cobalt_strike_4.7。附cobalt_strike_4.7安装包

环境这里是阿里的一台Centos7系统。 开始安装之前首先要确保自己安装了java11及以上环境。 安装java11步骤&#xff1a; sudo yum update sudo yum install java-11-openjdk-devel把服务器端&#xff08;CS工具分服务器端和客户端&#xff09;的CS安装到服务器上后给目录下的…

mysql原理--B+树索引的使用

1.索引的代价 在介绍如何更好的使用索引之前先要了解一下使用这玩意儿的代价&#xff0c;它在空间和时间上都会拖后腿&#xff1a; (1). 空间上的代价 这个是显而易见的&#xff0c;每建立一个索引都要为它建立一棵 B 树&#xff0c;每一棵 B 树的每一个节点都是一个数据页&…

Proxmark3 Easy救砖-20231209

事情是这样的&#xff0c;在淘宝买了个PM3&#xff0c;拿到手后刷固件的&#xff0c;一不小心刷成砖头了&#xff0c;现象就是四个灯全亮&#xff0c;插上电脑USB不识别。问商家他也不太懂&#xff0c;也是个半吊子技术&#xff0c;远程给我刷机搞了半天也没有搞定&#xff0c;…

Softmax回归

一、Softmax回归关键思想 1、回归问题和分类问题的区别 Softmax回归虽然叫“回归”&#xff0c;但是它本质是一个分类问题。回归是估计一个连续值&#xff0c;而分类是预测一个离散类别。 2、Softmax回归模型 Softmax回归跟线性回归一样将输入特征与权重做线性叠加。与线性回归…

排序算法:【冒泡排序】、逻辑运算符not用法、解释if not tag:

注意&#xff1a; 1、排序&#xff1a;将一组无序序列&#xff0c;调整为有序的序列。所谓有序&#xff0c;就是说&#xff0c;要么升序要么降序。 2、列表排序&#xff1a;将无序列表变成有序列表。 3、列表这个类里&#xff0c;内置排序方法&#xff1a;sort( )&#xff0…

排序-选择排序与堆排序

文章目录 一、选择排序二、堆排序三、时间复杂度四、稳定性 一、选择排序 思想&#xff1a; 将数组第一个元素作为min&#xff0c;然后进行遍历与其他元素对比&#xff0c;找到比min小的数就进行交换&#xff0c;直到最后一个元素就停止&#xff0c;然后再将第二个元素min&…

使用NCNN在华为M5部署MobileNet-SSD

一、下载ncnn-android-vulkan ncnn-android-vulkan.zip 文件是一个压缩文件&#xff0c;其中包含了 ncnn 框架在 Android 平台上使用 Vulkan 图形库加速的相关文件和代码。 在 Android 平台上&#xff0c;ncnn 框架可以利用 Vulkan 的并行计算能力来进行神经网络模型的推理计…

算法——位运算

常见位运算总结 基础位运算 << >> ~与&&#xff1a;有0就是0或|&#xff1a;有1就是1异或^&#xff1a;相同为0&#xff0c;相异为1 / 无进位相加 给一个数n&#xff0c;确定他的二进制表示中的第x位是0还是1 让第x位与上1即可先让n右移x位&上一个1&#…

【docker三】Docker镜像的创建方法

目录 一、Docker镜像&#xff1a; 1、 镜像的概念 2、docker的创建镜像方式&#xff1a; 1.1、基于已有镜像进行创建&#xff1a; 1.2、基于模版创建&#xff1a; 1.3、基于dockerfile创建&#xff1a; 二、Dockerfile概述 1、Dockerfile概念&#xff1a; 2、dockerfile…

【UI自动化测试】appium+python+unittest+HTMLRunner

简介 获取AppPackage和AppActivity 定位UI控件的工具 脚本结构 PageObject分层管理 HTMLTestRunner生成测试报告 启动appium server服务 以python文件模式执行脚本生成测试报告 下载与安装 下载需要自动化测试的App并安装到手机 获取AppPackage和AppActivity 参考&#xff…