本範例展示 JSP + AJAX + 文字檔儲存實現 Checkbox 多選框的多選、全選、新增、刪除、更新功能,涵蓋前端 DOM 動態操作、XMLHttpRequest 非同步傳輸、後端 JSP 檔案讀寫與中文編碼處理。
| 模組 | 關鍵技術點 |
|---|---|
| 即時建立 HTML 物件 | document.createElement、appendChild、innerHTML,所見即所得 |
| AJAX 傳輸 | XMLHttpRequest 非同步 GET/POST,僅傳必要參數 |
| 檔案儲存 | JSP 用 FileReader/Writer 處理 UTF-8/GBK 編碼 |
| 拖曳與展開/收合 | 滑鼠事件監聽,Cookie 記住位置與狀態 |
| 中文編碼處理 | 中文 OS 採 GBK,英文 OS 需轉 UTF-8 或雙向轉碼 |
// 動態新增 checkbox
function addCheckbox(text) {
var div = document.createElement('div');
var cb = document.createElement('input');
cb.type = 'checkbox'; cb.value = text;
var label = document.createElement('label');
label.appendChild(document.createTextNode(text));
div.appendChild(cb); div.appendChild(label);
document.getElementById('container').appendChild(div);
}
// AJAX 送出
function saveData() {
var xhr = new XMLHttpRequest();
xhr.open('POST', 'save.jsp', true);
xhr.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
xhr.send('data=' + encodeURIComponent(JSON.stringify(getAllData())));
}
<%@ page contentType="text/html;charset=UTF-8" %>
<%
String data = request.getParameter("data");
// 中文 OS 可能需轉碼
// data = new String(data.getBytes("ISO-8859-1"), "GBK");
java.io.FileWriter fw = new java.io.FileWriter("data.txt", false);
fw.write(data);
fw.close();
%>
點擊下載完整原始碼(含 JSP、JS、CSS、測試資料)
此範例適合學習 AJAX 非同步互動、DOM 動態操作與 JSP 檔案儲存的基礎整合模式。