本文提供一個基於原生 JSP + JavaScript 的經典員工管理列表示例,涵蓋**條件搜索、全選/反選、批量刪除確認、分頁導航**四大核心功能,代碼結構清晰,適合初學者理解 Web 交互基礎邏輯。
select.jspfunction chkall() {
var chkall = document.getElementById("chksall");
var chks = document.getElementsByName("chks");
for (var i = 0; i < chks.length; i++) {
chks[i].checked = chkall.checked;
}
}
通過 ID 獲取「全選」框,Name 獲取所有行勾選框,同步 checked 狀態。
function delchk() {
var ids = "";
var chks = document.getElementsByName("chks");
for (var i = 0; i < chks.length; i++) {
if (chks[i].checked) {
ids += chks[i].value + ",";
}
}
alert(ids); // 調試用
window.location.href = "delall.jsp?ids=" + ids;
}
遍歷勾選框,拼接 value(員工編號)為逗號分隔字串,攜帶參數跳轉至後端處理頁。實際項目建議改用 POST 表單提交,避免 URL 長度限制與安全風險。
<form action="select.jsp" method="post">
員工序號:<input type="text" name="nums">
員工姓名:<input type="text" name="ename">
<input type="submit" value="查詢">
</form>
<a href="javascript:if(window.confirm('是否批量刪除')){delchk();}">批量刪除</a>
<tr>
<td><input type="checkbox" name="chks" value="1004"></td>
<td>1004</td>
<td>大喬</td>
<td>
<a href="modify.jsp?modify=0&&nums=1004&&ename=大喬">修改</a>
<a href="del.jsp?num=1004">刪除</a>
</td>
</tr>
注意:URL 參數分隔符應為單一 &,示例中 && 為寫法錯誤,實際會導致參數解析異常。
<tr>
<td><a href="index.jsp?pageNum=1">首頁</a></td>
<td><a href="index.jsp?pageNum=0">上一頁</a></td>
<td><a href="index.jsp?pageNum=2">下一頁</a></td>
<td><a href="index.jsp?pageNum=3">尾頁</a></td>
<td>第1頁 共 3 頁 9條 當前3 條</td>
</tr>
| 痛點 | 建議方案 |
|---|---|
| JS 與 HTML 混寫,維護困難 | 引入 Vue/React 或至少分離 JS 文件,使用事件委託綁定 |
| 批量刪除用 GET 請求,不安全 | 改為 POST 表單提交,或 AJAX + RESTful DELETE API |
| 分頁邏輯硬編碼在前端 | 後端返回分頁元數據,前端模板渲染 |
| 無 XSS 防護 | 輸出變量使用 JSTL <c:out> 或 JS 編碼 |
| 無 CSRF 保護 | 表單隱藏域攜帶 Token,後端驗證 |
此示例雖屬「古典」JSP 模式,但完整展示了列表頁核心交互閉環:**查詢 → 選中 → 批量操作 → 分頁流轉**。理解這套原生邏輯,有助於深入掌握前後端數據流向,為後續學習現代前端框架、RESTful API 設計打下堅實基礎。