springboot+Vue实现分页

news/2024/5/16 22:23:55

文章目录

  • 一、后端
  • 二、前端

今天开发的有一个场景就是需要从远程ssh服务器上加载一个文件展示到前端,但是一次性拉过来有几万条数据,一下载加载整个文件会导致前端非常非常的卡,于是要使用分页解决,我之前看过的有mybatis的分页查询解决方案,哪个是封装好的,但是我的场景是查询文件实现分页展示,因此需要写一个个性化的分页逻辑。

一、后端

我后端使用的是springboot,用的是java连接远程服务器读取文件然后返回一个list列表。

用到了依赖

<dependency><groupId>io.jsonwebtoken</groupId><artifactId>jjwt</artifactId><version>0.9.1</version>
</dependency>

大致的逻辑就是说后端先通过你自己的方式获取到文件,有一个page,pagesize这两个参数控制要读取的内容从哪到哪。返回这一小段即可。前端每次点击上一页,下一页,页面大小实际上就是控制这两个参数进行数据读取。

public List<SyslogMessage> readRemoteFilePaged(int page, int pageSize) throws JSchException, SftpException, IOException {JSch jsch = new JSch();Session session = jsch.getSession(user, host, port);session.setPassword(password);session.setConfig("StrictHostKeyChecking", "no"); // 注意:生产环境中应该使用更安全的方式处理host keysession.connect();ChannelSftp channelSftp = (ChannelSftp) session.openChannel("sftp");channelSftp.connect();// 计算跳过的行数int skipLines = (page - 1) * pageSize;int currentLine = 0;List<SyslogMessage> loglist = new ArrayList<>();InputStream inputStream = channelSftp.get(remoteFilePath);try (BufferedReader reader = new BufferedReader(new InputStreamReader(inputStream))) {String line;while ((line = reader.readLine()) != null) {// 跳过指定数量的行if (currentLine < skipLines) {currentLine++;continue;}// 读取指定数量的行if (loglist.size() < pageSize) {loglist.add(new SyslogMessage(line));} else {break; // 达到每页大小,退出循环}}}channelSftp.disconnect();session.disconnect();return loglist;}

二、前端

前端使用的是Vue,主要就是用到了element中的el-pagination组件,使用handleSizeChange和handleCurrentChange控制页面大小以及当前页数。每次切换时都是用axios用这两个参数像后端请求数据,很方便,注意url要用` `而不是单引号

<template><div><div class="pagination-container">  <h1 class="server-log-title">133服务器sys日志</h1>  </div>  <el-table :data="syslog" style="width: 100%" :row-class-name="tableRowClassName"><el-table-columnprop="log"label="日志"width="auto"></el-table-column>   </el-table><div class="pagination-container"><el-pagination@size-change="handleSizeChange"@current-change="handleCurrentChange":page-sizes="[50, 100, 150, 200]":page-size="pageSize"layout="total, sizes, prev, pager, next, jumper":total="1000000"></el-pagination></div></div>
</template><script>
import axios from 'axios'
export default {data() {return {name: 'Ecust',syslog: [],currentPage:10,pageSize:50,totalLogCount:0}},methods:{tableRowClassName({row, rowIndex}) {if (row.log && row.log.includes('高资源')) {console.log()return 'warning-row';} else{return 'success-row';}},async fetchLogs(){try {let url=`http://localhost:5678/syslog/page?page=${this.currentPage}&pageSize=${this.pageSize}`await axios.get(url).then((response)=>{this.syslog = response.data// console.log(response)})} catch (error) {console.log('Error:', error)}},handleSizeChange(val) {  this.pageSize = val  this.currentPage = 1 // 当每页条数改变时,重置页码为第一页  this.fetchLogs()  },  handleCurrentChange(val) {  this.currentPage = val  this.fetchLogs()  }  },created() {this.fetchLogs()}
}
</script><style>
.el-table .warning-row {background: oldlace;}.el-table .success-row {background: #f0f9eb;}
</style><style scoped>.pagination-container {  display: flex;  justify-content: center; /* 水平居中 */  align-items: center; /* 垂直居中,如果需要的话 */  height: 100px; /* 或者其他你需要的高度 */  }.pagination-container2 {  display: flex;  justify-content: center; /* 水平居中 */  align-items: center; /* 垂直居中 */  height: 100vh; /* 使用视口高度来垂直居中,或者根据需要调整 */  margin: 0; /* 移除默认的外边距 */  padding: 20px; /* 添加一些内边距 */  background-color: #f5f5f5; /* 添加背景色 */  
}  .server-log-title {  font-family: 'Arial', sans-serif; /* 使用一个常见的无衬线字体 */  color: #333; /* 字体颜色 */  font-size: 2em; /* 字体大小 */  text-align: center; /* 文本居中 */  margin: 0; /* 移除默认的外边距 */  padding: 0; /* 移除默认的内边距 */  letter-spacing: 1px; /* 字母间距 */  text-shadow: 1px 1px 2px rgba(0, 0, 0, 0.1); /* 文本阴影,增加立体感 */  
} 
</style>

http://www.mrgr.cn/p/04385005

相关文章

APP上架APP Store因为苹果登录被拒,该如何解决

之前有一段时间 &#xff0c;我们的APP因为苹果登录被拒了几次。分享出来&#xff0c;希望对大家有所帮助。 主要有两种被拒理由&#xff1a; 没有登录/苹果登录。登录按钮设计不符合标准。 这其实是很小的一件事情。但是就是这么小的事情&#xff0c;我们在这上面栽了几次跟…

Odoo:世界排名第一的免费开源设备资产(EAM)管理系统介绍

本文节选自Odoo亚太金牌服务机构【开源智造】所编写的《Odoo行业应用解决方案白皮书》如需获取完整的知识内容&#xff0c;请至开源智造官网免费获取。感谢网友一键三连&#xff1a;点赞、转发、收藏&#xff0c;您的支持是我们最大的前进动力&#xff01; 概述 实施全面的维护…

.net8系列-05图文并茂手把手教你配置日志组件log4net

log4net是什么? log4net是Apache软件基金会为.NET平台开发的一个日志记录库。它是Apache log4j框架的.NET移植版本,属于Apache Logging Services项目的一部分。 为什么使用log4net? log4net设计用于帮助.NET应用程序的开发者控制日志信息的生成过程,使得日志信息可以根据配…

(MSFT.O)微软2024财年Q3营收619亿美元

在科技的浩渺宇宙中&#xff0c;一颗璀璨星辰再度闪耀其光芒——(MSFT.O)微软公司于2024财政年度第三季展现出惊人的财务表现&#xff0c;实现总营业收入达到令人咋舌的6190亿美元。这一辉煌成就不仅突显了微软作为全球技术领导者之一的地位&#xff0c;更引发了业界内外对这家…

您可知道如何通过`HTTP2`实现TCP的内网穿透???

可能有人很疑惑应用层 转发传输层?,为什么会有这样的需求啊???哈哈技术无所不用其极,由于一些场景下,对于一个服务器存在某一个内部网站中,但是对于这个服务器它没有访问外网的权限,虽然也可以申请端口访问外部指定的ip+端口,但是对于访问服务内部的TCP的时候我们就会…

【链表】Leetcode K个一组翻转链表

题目讲解 25. K 个一组翻转链表 算法讲解 虽然这道题是一道困难题&#xff0c;但是从代码层面很简单&#xff0c;只是一道简单的模拟&#xff1a;我们要先求出总共需要翻转的链表有多少组&#xff08;链表的长度 / k&#xff09;&#xff0c;接下来就是翻转k的链表最链接的问…

react 学习笔记二:ref、状态、继承

基础知识 1、ref 创建变量时&#xff0c;需要运用到username React.createRef()&#xff0c;并将其绑定到对应的节点。在使用时需要获取当前的节点&#xff1b; 注意&#xff1a;vue直接使用里面的值&#xff0c;不需要再用this。 2、状态 组件描述某种显示情况的数据&#…

Oracle中rman使用记录

最近在项目中&#xff0c;遇到使用RMAN的操作来恢复数据库中某个时间归档日志&#xff0c;RMAN的原理和理解&#xff0c;网友们百度了解一下。我重点将实操部分了。直接上实验环节&#xff0c;让网友更懂。&#xff08;特别提醒&#xff1a;我是1:1用VMware克隆数据库进行RMAN还…

数据结构_顺序表_顺序表的初始化、插入、删除、修改、查询打印(基于C语言实现)

通过C语言实现顺序表的相关功能, 并通过了Linux平台测试, 注释完整.版本:2024年4月29日 V1.0 发布于博客园/*** @file name : SequenceList.c* @brief : 实现顺序表元素的增删查改* @author : RISE_AND_GRIND@163.com* @date : 2024/04/29* @version : 1.0* @not…

吴恩达2022机器学习专项课程(一)7.2 逻辑回归的简化成本函数

问题预览/关键词 本节课内容逻辑回归的损失函数简化之后的形式是&#xff1f;为什么可以简化&#xff1f;成本函数的通用形式是&#xff1f;逻辑回归成本函数的最终形式是&#xff1f;逻辑回归为什么用对数损失函数计算成本函数&#xff1f;为什么不直接给出逻辑回归损失函数的…

【leetcode】数组和相关题目总结

1. 两数之和 直接利用hashmap存储值和对于索引&#xff0c;利用target-nums[i]去哈希表里找对应数值。返回下标。 class Solution { public:vector<int> twoSum(vector<int>& nums, int target) {unordered_map<int, int> mp;vector<int> res;fo…

如何在CentOS本地搭建DataEase数据分析服务并实现远程查看数据分析

文章目录 前言1. 安装DataEase2. 本地访问测试3. 安装 cpolar内网穿透软件4. 配置DataEase公网访问地址5. 公网远程访问Data Ease6. 固定Data Ease公网地址 前言 DataEase 是开源的数据可视化分析工具&#xff0c;帮助用户快速分析数据并洞察业务趋势&#xff0c;从而实现业务…

qt学习篇---C++基础学习

本学习笔记学习下面视频总结&#xff0c;感兴趣可以去学习。讲的很详细 【北京迅为】嵌入式学习之QT学习篇_哔哩哔哩_bilibilihttps://www.bilibili.com/video/BV1tp4y1i7EJ/?spm_id_from333.337.search-card.all.click&vd_source8827cc0da16223b9f2ad8ae7111de9e2 目录 C…

大数据开发详解

点击下载《大数据开发详解》 1. 前言 随着信息化时代的快速发展&#xff0c;大数据已经成为了企业和组织不可或缺的重要资源。大数据开发则是指通过一系列技术手段&#xff0c;对海量数据进行收集、存储、处理、分析和挖掘&#xff0c;以实现数据的价值化利用。大数据开发涉及…

如何进行制造设备数据汇集,发挥数据的价值?

数字化转型正深刻推动制造企业实现远程监控、提高生产效率、降低生产成本、优化产品质量及明晰精细化方向。并且工业互联网的发展离不开工业数据的应用&#xff0c;而制造设备数据汇集正是应用的基础。但制造设备数据汇集存在以下难点及痛点&#xff1a; 1、安全把控难 关键的…

闲话 Asp.Net Core 数据校验(三)EF Core 集成 FluentValidation 校验数据例子

前言 一个在实际应用中 EF Core 集成 FluentValidation 进行数据校验的例子。 Step By Step 步骤 创建一个 Asp.Net Core WebApi 项目 引用以下 Nuget 包 FluentValidation.AspNetCore Microsoft.AspNetCore.Identity.EntityFrameworkCore Microsoft.EntityFrameworkCore.Re…

C++实战演练---负载均衡在线oj项目预热

顾得泉&#xff1a;个人主页 个人专栏&#xff1a;《Linux操作系统》 《C从入门到精通》 《LeedCode刷题》 键盘敲烂&#xff0c;年薪百万&#xff01; 前言 学习准备了快一年时间&#xff0c;心心念念的实战演练终于可以开始了&#xff0c;话不多说&#xff0c;直接进入主题…

verilog分析task的接口设计,证明这种写法:assign {a,b,c,d} = links;

verilog分析task的接口设计&#xff0c;证明这种写法&#xff1a;assign {a,b,c,d} links; 1&#xff0c;task在状态机中的使用好处&#xff1a;2&#xff0c;RTL设计3&#xff0c;测试testbench4&#xff0c;波形分析&#xff0c;正确&#xff01; 参考文献&#xff1a; 1&am…

Phi-3-mini-4k-instruct 的功能测试

Model card 介绍 Phi-3-Mini-4K-Instruct 是一个 3.8B 参数、轻量级、最先进的开放模型&#xff0c;使用 Phi-3 数据集进行训练&#xff0c;其中包括合成数据和经过过滤的公开可用网站数据&#xff0c;重点是 高品质和推理密集的属性。 该型号属于 Phi-3 系列&#xff0c;Mini…

01 第一次学Docker

刚开始学,还只是一知半解,但是今天只学了这一点,容我水一点。其中肯定有不少错误或者不恰当的地方,求原谅。希望我以后能定期回顾自己的博客吧,hhh,估计有些难,但是给自己定下一个研究目标总是好的。 一、什么是Docker 搜索发现,docker是一个开源的应用容器引擎。 emm,…