一、页面初始化阶段(加载即执行)

  1. 加载栏目列表(同步请求)

    • 发送同步 AJAX 请求到SearchChannel接口,获取所有栏目数据。

    • 清空下拉框(.channelid)后,先添加 “全部” 选项,再循环生成各栏目对应的下拉选项(value 为栏目 ID,显示文本为栏目名称)。

    • 若请求失败,弹出 “出错啦” 提示。

初始化分页参数定义全局变量page = 1(当前页码,默认第一页)和pageSize = 4(每页显示 4 条数据)。

首次加载数据和分页控件调用loadData():加载第一页数据并渲染到表格。调用loadPage():计算总页数并生成分页按钮(首页、上一页、页码、下一页、尾页)。

二、数据加载与展示流程(核心功能)

1. 加载数据(loadData()函数)

作用:根据当前查询条件和分页参数,从后端获取数据并渲染表格。

  • 收集查询条件:获取下拉框选中的channelid(栏目 ID)、输入框的title(标题关键词)和author(作者关键词)。

  • 发送请求:向SearchContent接口发送 GET 请求,携带参数(channelidtitleauthorpagepageSize)。

  • 渲染表格

    • 若请求成功,从返回数据中提取列表arr,清空表格 tbody 后,循环生成表格行。

    • 每行包含:复选框、ID、栏目名称、标题、创建时间(只显示日期部分)、作者、图片、修改 / 删除按钮。

  • 若请求失败,弹出 “出错啦” 提示。

2. 加载分页控件(loadPage()函数)

作用:根据查询条件计算总页数,动态生成分页按钮。

  • 收集查询条件:与loadData()一致(channelidtitleauthor)。

  • 发送请求:向GetCount接口发送 GET 请求,获取符合条件的总数据条数。

  • 生成分页按钮

    • 计算总页数:count = 总条数 / pageSize(向上取整)。

    • 清空分页容器(.page)后,依次添加 “首页”“上一页” 按钮,再循环生成页码按钮(默认第一页高亮),最后添加 “下一页”“尾页” 按钮。

三、交互控制流程(用户操作响应)

1. 搜索按钮点击(.search点击事件)

  • 重置当前页码为page = 1(回到第一页)。

  • 调用loadData():根据新条件加载第一页数据。

  • 调用loadPage():根据新条件重新计算总页数并更新分页按钮。

2. 分页操作(页码、首页、尾页、上下页点击)

所有分页操作都会同步更新数据分页按钮样式

  • 点击页码(.item点击事件)

    • page设为点击的页码值,调用loadData()加载对应页数据。

    • 高亮当前页码按钮,移除其他页码的高亮样式。

  • 点击首页(.first点击事件)

    • page设为 1,调用loadData()加载第一页数据。

    • 高亮第一个页码按钮。

  • 点击尾页(.last点击事件)

    • page设为总页数(.item的数量),调用loadData()加载最后一页数据。

    • 高亮最后一个页码按钮。

  • 点击上一页(.prev点击事件)

    • 若当前是第一页,弹出提示并终止操作;否则page减 1,调用loadData()加载上一页数据。

    • 高亮当前页码对应的按钮。

  • 点击下一页(.next点击事件)

    • 若当前是最后一页,弹出提示并终止操作;否则page加 1,调用loadData()加载下一页数据。

    • 高亮当前页码对应的按钮。

一、Servlet 核心流程

  1. 请求处理入口

    • Servlet 通过 doGet/doPost 方法接收前端请求,是 Java Web 处理 HTTP 请求的基础入口

    • 需掌握 HttpServletRequest(获取参数)、HttpServletResponse(设置响应、输出数据)的核心 API

  2. 参数获取

    • request.getParameter("xxx"):获取前端通过 URL 或表单传递的参数

    • 注意参数为空判断(null 或空字符串),避免空指针异常

二、数据库操作与 SQL 拼接

  1. 动态 SQL 拼接

    • 根据前端条件(栏目、标题、作者等)动态拼接 WHERE 子句,实现条件查询

    • 分页实现:LIMIT (page-1)*pageSize, pageSize,需掌握 MySQL 分页语法

  2. 多表联查

    • SELECT content.*,channelname FROM content,channel WHERE content.channelid=channel.id

    • 关联查询需注意表连接条件(content.channelid=channel.id),避免笛卡尔积

  3. 工具类封装

    • MysqlUtil.getJsonBySql(sql, columns):封装数据库查询、结果集转 JSON 的逻辑

    • 需理解工具类如何执行 SQL、遍历 ResultSet、拼接 JSON 字符串

三、前后端交互规范

  1. 响应格式与编码

    • response.setContentType("text/json;charset=utf-8"):固定响应为 JSON 格式,UTF-8 编码防乱码

    • 前端通过 AJAX 接收 JSON 数据,需对应解析渲染

  2. 请求协同

    • 前端 AJAX 请求(SearchChannel/SearchContent)与后端 Servlet 路由一一对应

    • 参数命名规范:前后端保持一致(如 channelid/title

四、功能模块实现

  1. 分页逻辑

    • 前端传递 page/pageSize,后端计算偏移量 (page-1)*pageSize

    • 结合 LIMIT 实现分页,需理解页码与数据区间的映射关系

  2. 数据渲染闭环

    • 后端查询结果 → 转 JSON → 前端接收 → 动态渲染表格 / 下拉框

    • 掌握前端 jQuery 动态拼接 DOM(如 append 生成表格行)与后端数据返回的协同

  • 同步请求(Synchronous Request)
    指任务按照顺序执行,前一个任务完成后,后一个任务才能开始。发起请求后,发起方会阻塞等待响应结果,期间无法执行其他操作。
    类比:打电话时,必须等对方接电话并回应后,才能继续下一步交流,过程中不能同时处理其他事情。

  • 异步请求(Asynchronous Request)
    指任务无需等待前一个任务完成即可执行,发起请求后,发起方不会阻塞,而是继续处理其他任务,待请求结果返回后,再通过回调、事件等方式处理响应。
    类比:发邮件时,发送后无需等待对方回复,可以继续做其他事,收到回复后再查看即可。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/news/918411.shtml
繁体地址,请注明出处:http://hk.pswp.cn/news/918411.shtml
英文地址,请注明出处:http://en.pswp.cn/news/918411.shtml

如若内容造成侵权/违法违规/事实不符,请联系英文站点网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

鹧鸪云光伏仿真:项目前期决策的“数据明灯”

曾有一处光伏项目,在精心筹备数月后终于建成,却在运行初期即因未充分评估山体遮挡影响,导致实际发电量较预期大幅降低近一成。前期决策中的微小疏漏,往往成为项目经济性与可行性的致命伤。而鹧鸪云光伏仿真软件正是一盏照亮前路的…

开发指南129-基础类-BaseController

所有接口都需要继承BaseControllerBaseController里有很多有用的方法,现举例最重要的几个:1、getURI返回接口地址,就是PostMapping或GetMapping中定义的接口地址。常用于返回值中,例如接口的异常处理:try {// 处理逻辑…

C++高频知识点(十八)

文章目录86. C多线程中,锁的实现方式有哪些?1. 互斥锁(Mutex)2. 递归互斥锁(Recursive Mutex)3. 读写锁(Shared Mutex)4. 自旋锁(Spinlock)5. 条件变量&#…

【C语言强化训练16天】--从基础到进阶的蜕变之旅:Day1

🔥个人主页:草莓熊Lotso 🎬作者简介:C研发方向学习者 📖个人专栏: 《C语言》 《数据结构与算法》《C语言刷题集》《Leetcode刷题指南》 ⭐️人生格言:生活是默默的坚持,毅力是永久的…

【软考中级网络工程师】知识点之 TCP 协议深度剖析

目录一、TCP 协议简介二、TCP 协议的特点2.1 面向连接2.2 可靠性高2.3 拥塞控制2.4 全双工通信2.5 高效性2.6 支持多种应用协议2.7 可靠的错误恢复三、TCP 协议的工作机制3.1 三次握手建立连接3.2 数据传输3.3 四次挥手关闭连接四、TCP 协议的数据包格式五、TCP 协议在实际应用…

操作系统1.5:操作系统引导

目录 总览 什么是操作系统引导? 磁盘里边有哪些相关数据? 操作系统引导(开机过程) 总览 什么是操作系统引导? 操作系统引导(boot)——开机的时候,怎么让操作系统运行起来? 磁盘里边有哪些相关数据? 一个刚买来的磁盘(硬…

[鹧鸪云]光伏AI设计平台解锁电站开发新范式

1.[鹧鸪云]平台概述[鹧鸪云]是由鹧鸪云(徐州)信息技术有限公司倾力打造的,可以媲美‌PVsyst的光伏AI设计平台。它为光伏项目不同阶段的开发提供了快速设计、卫星地图设计、无人机3D设计、Unity3D设计、专业绘图设计与场区设计多种设计方式&am…

docker compose和docker-compose命令的区别

Docker Compose 有两种命令形式:docker compose(空格连接)docker-compose(短横线连接)其核心区别如下:一、技术特性docker-compose(短横线)独立可执行文件:作为独立程序安…

基于Strands Agent开发辅助阅读Agent

序 本篇由来,在COC上我当面感谢了组委会和姜宁老师,随即被姜宁老师催稿,本来当天晚上写了一个流水账,感觉甚为不妥。于是决定慢慢写,缓缓道来。要同时兼顾Show me the code,Show me the vide。希望能形成一…

20250807简单树上问题

引入 树是一种特殊的图,因其看起来像一颗倒挂的树而得名。 树有许多等价的形式化定义,我们这里只取一个:nnn个点n−1n-1n−1条边的无向连通图。 树的直径 定义树上任意两点之间最长的简单路径为树的直径。 一棵树可能有很多直径&#xff0c…

诺基亚就4G/5G相关专利起诉吉利对中国汽车及蜂窝模组企业的影响

诺基亚于2025年7月18日向欧洲统一专利法院(UPC)曼海姆分庭和德国慕尼黑法院提起诉讼,控诉中国吉利控股集团及其极氪、领克、路特斯、Smart等关联品牌在未经许可的情况下使用诺基亚4项蜂窝通信标准必要专利 。涉案专利包括1项覆盖4G/5G的标准必…

Kotlin反射详解

反射是一种机制,它允许我们在运行时检查、修改和操作类或对象的内部结构。反射开启了动态编程的可能性,在开发库、框架或工具等场景中非常有用。Java 中的反射 在 Java 中,反射一直是实现动态编程的重要基石。它允许开发者在不提前知道类名的…

学习嵌入式-IMX6ULL学习——中断

volatile:易变的,防止系统优化对寄存器做处理的时候使用,在进行写1清零操作时,防止该操作被系统优化;一、GIC通用中断控制器1.GIC通用中断控制器GIC接收众多外部中断,然后对其进行处理,最终通过…

HENGSHI SENSE 6.0 功能-AI 查数助手

面向所有AI Agent开放BI和数据分析能力 AI 查数助手 6.0版本中,我们AI助手的优化是比较深入且全面的。从问答效率到集成能力,都得到了大的跃升,是智能问数应用场景的重大升级以及体验的全方位优化。我们优化了 AI 助手执行流程,…

降压型DCDC电源芯片推荐-芯伯乐XBL4001 40V/5A

在电子设备不断追求高性能与低功耗的今天,电源管理芯片的重要性不言而喻。芯伯乐主推的XBLW-XBL4001芯片,凭借其出色的设计与稳定的性能,为电源管理领域带来了一款实用的新选择。一、芯片概述XBLW-XBL4001是一款降压型(Buck&#…

uni-app app端安卓和ios如何申请麦克风权限,唤起提醒弹框

代码包含功能如下: 1、判断推送权限是否开启 2、判断定位权限是否开启 3、判断麦克风权限是否开启 4、判断相机权限是否开启 5、判断相册权限是否开启 6、判断通讯录权限是否开启 7、判断日历权限是否开启 8、判断备忘录权限是否开启 9、Android权限查询 10、检查系…

关于 Rust 异步(无栈协程)的相关疑问

这是一个记录问题求助的文章。关于 waker 与运行时的合作方式我肤浅地学习了 Rust 异步底层实现原理,关于 Future、waker 和运行时等。关于 waker 我有三点猜测:waker 是由实现执行器的人提供的在执行器中会调用 epoll_wait,epoll 返回 fd&am…

stm32项目(25)——基于stm32的植物生长箱环境监测系统

1.实现功能 测 环境温湿度、光照强度、土壤湿度、水箱水位 手机APP显示 温度过低-->打开加热板 湿度过低-->打开水泵 土壤湿度低-->开水泵 --->只要有指标低于阈值时 就蜂鸣器报警 光强弱-->补光 水位低-->抽水 OLED屏幕实时显示各种信息 分…

golang 基础案例_02

1.锁有时候我们的代码中可能会存在多个 goroutine 同时操作一个资源(临界区)的情况,这种情况下就会发生竞态问题(数据竞态)。(1)、互斥锁;(2)、读写互斥锁;(3)、sync.WaitGroup;(4)、…

C++算法·前缀和

前缀和(Prefix(Prefix(Prefix Sum)Sum)Sum)的定义 前缀和是一种高效处理区间求和问题的算法技巧 其核心思想是通过预处理构建一个前缀和数组 使得后续的区间和查询可以在常数时间O(1)O(1)O(1)内完成 核心概念 定义 给定一个数组a[1...n]a[1...n]a[1...n],其前缀和数组s[1...…