当前位置: 首页 > news >正文

项目实战:分页功能实战

1、在index.html添加点击事件

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>Title</title><link rel="stylesheet" href="style/index.css"><script src="script/axios.min.js"></script><script src="script/index.js"></script><script src="script/common.js"></script>
</head>
<body><div id="div0"><div id="div_title"><p>欢迎使用水果库存系统</p><div style="float: right;border: 0px solid red;margin-right:8%;margin-bottom: 4px"><a href="add.html" style="text-decoration: none">添加新库存</a></div></div><div id="div_fruit_table"><table id="fruit_tbl"><tr><th class="w25">名称</th><th class="w25">单价</th><th class="w25">库存</th><th>操作</th></tr><!--<tr><td><a href='edit.html?fid=1'>苹果</a></td><td>5</td><td>100</td><td><img class="delImg" src="imgs/del.png" onclick='delFruit(1)'/></td></tr>--></table></div><div id="div_pagination"><input type="button" class="btn" onclick="page('first')" value="首页"/><input type="button" class="btn" onclick="page('pre')" value="上一页"/><input type="button" class="btn" onclick="page('next')" value="下一页"/><input type="button" class="btn" onclick="page('last')" value="尾页"/></div></div>
</body>
</html>

2、编写html.js

2.2、common.js

function $(key){if(key){if(key.startsWith("#")){key = key.substring(1)return document.getElementById(key)}else{let nodeList = document.getElementsByName(key)return Array.from(nodeList)}}
}
window.onload=function(){loadData();
}
let pageNo = 1;
let pageCount = 0;
function page(str) {if (str) {if (str == "first") {pageNo = 1;}else if (str == "pre") {pageNo = pageNo - 1;}else if (str == "next") {pageNo = pageNo + 1;}else if (str == "last") {pageNo = pageCount;}if (pageNo > pageCount) {pageNo=pageCount}if (pageNo <= 0) {pageNo=1}}loadData(pageNo)
}
loadData=function(pageNo=1){//pageNo这个参数有默认值,如果没有传值,则使用默认值 1axios({method: 'get',url: '/index',params: {pageNo: pageNo}}).then(response => {debuggerlet fruitList = response.data.data.listpageNo = response.data.data.pageNopageCount = response.data.data.pageCount// 此处使用的是axios,那么响应回来的数据自动就是json,// 不需要再进行parse(如果是原始的ajax操作,那么一定需要parse)// let fruitArr = JSON.parse(fruitList)let fruitArr = fruitList;let fruitTbl = $("#fruit_tbl")//向表格中添加行之前,先删除原来的行let rows=fruitTbl.rowsfor (let i = rows.length - 1; i >= 1; i--) {fruitTbl.deleteRow(i);}for (let i = 0; i < fruitArr.length; i++) {let tr = fruitTbl.insertRow();let fnameTD = tr.insertCell();let priceTD = tr.insertCell();let fcountTD = tr.insertCell();let operTD = tr.insertCell();let fruit = fruitArr[i];//fnameTD.innerText = fruit.fnamefnameTD.innerHTML = '<a href="edit.html?fid=' + fruit.fid + '">' + fruit.fname + '</a>';priceTD.innerText = fruit.price;fcountTD.innerText = fruit.fcount;operTD.innerHTML = "<img class=\"delImg\" src=\"imgs/del.png\" onclick=\"delFruit(" + fruit.fid + ")\"/>";}});
}delFruit = function (fid) {if (window.confirm('是否确认删除?')) {axios({method: 'get',url: 'del',params:{fid: fid,}}).then(response=>{if (response.data.flag) {window.location.reload();}});}
};

 3、编写IndexServlet

package com.csdn.fruit.servlet;
import com.csdn.fruit.dao.FruitDao;
import com.csdn.fruit.dao.impl.FruitDaoImpl;
import com.csdn.fruit.dto.PageInfo;
import com.csdn.fruit.dto.Result;
import com.csdn.fruit.pojo.Fruit;
import com.csdn.fruit.util.ResponseUtil;
import jakarta.servlet.ServletException;
import jakarta.servlet.annotation.WebServlet;
import jakarta.servlet.http.HttpServlet;
import jakarta.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.util.List;
@WebServlet("/index")
public class IndexServlet extends HttpServlet {private FruitDao fruitDao = new FruitDaoImpl();@Overrideprotected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {Integer pageNo = 1;String pageNoStr = req.getParameter("pageNo");if (pageNoStr != null && !"".equals(pageNoStr)) {pageNo = Integer.parseInt(pageNoStr);}List<Fruit> fruitList = fruitDao.getFruitList(pageNo, 5);//总记录条数Integer total = fruitDao.getRecordCount();//计算总页数//Integer pageSize = 5;//当前项目中,每页数据固定写死 5 条//Integer pageCount = (total + pageSize - 1) / pageSize;PageInfo<Fruit> pageInfo = new PageInfo<>(fruitList, pageNo, total);Result result = Result.OK(pageInfo);ResponseUtil.print(resp, result);}
}

相关文章:

  • Pytho入门教程之Python运行的三种方式
  • MTK联发科天玑9000旗舰5G移动平台处理器_MT6983芯片定制开发
  • GPT学习笔记
  • 解决方案中word中分节符的使用
  • Linux软件安装包管理器yum
  • 【漏洞复现】Apache_Tomcat7+ 弱口令 后台getshell漏洞
  • AI:52-基于深度学习的垃圾分类
  • Azure 机器学习 - 设置 AutoML 训练时序预测模型
  • AI 引擎系列 4 - 首次运行 AI 引擎编译器和 x86simulator(2022.1 更新)
  • leetCode 322.零钱兑换 完全背包 + 动态规划 + 记忆化搜索 + 递推 + 空间优化 + 画递归树
  • 基于STM32CubeMX和keil采用USART/UART实现非中断以及中断方式数据回环测试借助CH340以及XCOM
  • Docker学习——③
  • 【Redis】的简介和安装配置(Linux和windows)及操作命令
  • Hive 解析 JSON 字符串数据的实现方式
  • Golang源码分析之golang/sync之singleflight
  • egg(89)--egg之redis的发布和订阅
  • JAVA多线程机制解析-volatilesynchronized
  • Linux快速配置 VIM 实现语法高亮 补全 缩进等功能
  • macOS 中 shell 创建文件夹及文件并 VS Code 打开
  • python 装饰器(一)
  • react-native 安卓真机环境搭建
  • React-Native - 收藏集 - 掘金
  • React系列之 Redux 架构模式
  • Spring Security中异常上抛机制及对于转型处理的一些感悟
  • sublime配置文件
  • Swift 中的尾递归和蹦床
  • Windows Containers 大冒险: 容器网络
  • 不发不行!Netty集成文字图片聊天室外加TCP/IP软硬件通信
  • 构建工具 - 收藏集 - 掘金
  • 如何解决微信端直接跳WAP端
  • 使用iElevator.js模拟segmentfault的文章标题导航
  • 思否第一天
  • 腾讯优测优分享 | Android碎片化问题小结——关于闪光灯的那些事儿
  • 提醒我喝水chrome插件开发指南
  • 自制字幕遮挡器
  • ​LeetCode解法汇总2182. 构造限制重复的字符串
  • #ifdef 的技巧用法
  • (NSDate) 时间 (time )比较
  • (篇九)MySQL常用内置函数
  • (三)uboot源码分析
  • (五)IO流之ByteArrayInput/OutputStream
  • (转)关于pipe()的详细解析
  • ****** 二十三 ******、软设笔记【数据库】-数据操作-常用关系操作、关系运算
  • ./mysql.server: 没有那个文件或目录_Linux下安装MySQL出现“ls: /var/lib/mysql/*.pid: 没有那个文件或目录”...
  • .net 写了一个支持重试、熔断和超时策略的 HttpClient 实例池
  • .net反混淆脱壳工具de4dot的使用
  • .w文件怎么转成html文件,使用pandoc进行Word与Markdown文件转化
  • @vue/cli脚手架
  • [ vulhub漏洞复现篇 ] Apache APISIX 默认密钥漏洞 CVE-2020-13945
  • [ 蓝桥杯Web真题 ]-布局切换
  • [android] 手机卫士黑名单功能(ListView优化)
  • [AX]AX2012 AIF(四):文档服务应用实例
  • [Big Data - Kafka] kafka学习笔记:知识点整理
  • [C++] cout、wcout无法正常输出中文字符问题的深入调查(1):各种编译器测试
  • [C++数据结构](22)哈希表与unordered_set,unordered_map实现