一、頁面初始化階段(加載即執行)
加載欄目列表(同步請求)
發送同步 AJAX 請求到
SearchChannel
接口,獲取所有欄目數據。清空下拉框(
.channelid
)后,先添加 “全部” 選項,再循環生成各欄目對應的下拉選項(value 為欄目 ID,顯示文本為欄目名稱)。若請求失敗,彈出 “出錯啦” 提示。
初始化分頁參數定義全局變量page = 1
(當前頁碼,默認第一頁)和pageSize = 4
(每頁顯示 4 條數據)。
首次加載數據和分頁控件調用loadData()
:加載第一頁數據并渲染到表格。調用loadPage()
:計算總頁數并生成分頁按鈕(首頁、上一頁、頁碼、下一頁、尾頁)。
二、數據加載與展示流程(核心功能)
1. 加載數據(loadData()
函數)
作用:根據當前查詢條件和分頁參數,從后端獲取數據并渲染表格。
收集查詢條件:獲取下拉框選中的
channelid
(欄目 ID)、輸入框的title
(標題關鍵詞)和author
(作者關鍵詞)。發送請求:向
SearchContent
接口發送 GET 請求,攜帶參數(channelid
、title
、author
、page
、pageSize
)。渲染表格:
若請求成功,從返回數據中提取列表
arr
,清空表格 tbody 后,循環生成表格行。每行包含:復選框、ID、欄目名稱、標題、創建時間(只顯示日期部分)、作者、圖片、修改 / 刪除按鈕。
若請求失敗,彈出 “出錯啦” 提示。
2. 加載分頁控件(loadPage()
函數)
作用:根據查詢條件計算總頁數,動態生成分頁按鈕。
收集查詢條件:與
loadData()
一致(channelid
、title
、author
)。發送請求:向
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 核心流程
請求處理入口
Servlet 通過?
doGet
/doPost
?方法接收前端請求,是 Java Web 處理 HTTP 請求的基礎入口需掌握?
HttpServletRequest
(獲取參數)、HttpServletResponse
(設置響應、輸出數據)的核心 API
參數獲取
request.getParameter("xxx")
:獲取前端通過 URL 或表單傳遞的參數注意參數為空判斷(
null
?或空字符串),避免空指針異常
二、數據庫操作與 SQL 拼接
動態 SQL 拼接
根據前端條件(欄目、標題、作者等)動態拼接?
WHERE
?子句,實現條件查詢分頁實現:
LIMIT (page-1)*pageSize, pageSize
,需掌握 MySQL 分頁語法
多表聯查
SELECT content.*,channelname FROM content,channel WHERE content.channelid=channel.id
關聯查詢需注意表連接條件(
content.channelid=channel.id
),避免笛卡爾積
工具類封裝
MysqlUtil.getJsonBySql(sql, columns)
:封裝數據庫查詢、結果集轉 JSON 的邏輯需理解工具類如何執行 SQL、遍歷?
ResultSet
、拼接 JSON 字符串
三、前后端交互規范
響應格式與編碼
response.setContentType("text/json;charset=utf-8")
:固定響應為 JSON 格式,UTF-8 編碼防亂碼前端通過 AJAX 接收 JSON 數據,需對應解析渲染
請求協同
前端 AJAX 請求(
SearchChannel
/SearchContent
)與后端 Servlet 路由一一對應參數命名規范:前后端保持一致(如?
channelid
/title
)
四、功能模塊實現
分頁邏輯
前端傳遞?
page
/pageSize
,后端計算偏移量?(page-1)*pageSize
結合?
LIMIT
?實現分頁,需理解頁碼與數據區間的映射關系
數據渲染閉環
后端查詢結果 → 轉 JSON → 前端接收 → 動態渲染表格 / 下拉框
掌握前端 jQuery 動態拼接 DOM(如?
append
?生成表格行)與后端數據返回的協同
同步請求(Synchronous Request)
指任務按照順序執行,前一個任務完成后,后一個任務才能開始。發起請求后,發起方會阻塞等待響應結果,期間無法執行其他操作。
類比:打電話時,必須等對方接電話并回應后,才能繼續下一步交流,過程中不能同時處理其他事情。異步請求(Asynchronous Request)
指任務無需等待前一個任務完成即可執行,發起請求后,發起方不會阻塞,而是繼續處理其他任務,待請求結果返回后,再通過回調、事件等方式處理響應。
類比:發郵件時,發送后無需等待對方回復,可以繼續做其他事,收到回復后再查看即可。