JavaScript運行在瀏覽器(客戶端),Java運行在服務器(服務端),兩者無法直接共享變量或調用方法。必須通過HTTP請求(AJAX/Fetch)傳遞數據。本文詳解標準交互模式。
❌ 以為JS變量能直接被JSP/Java代碼讀取(如圖中試圖將JS `index` 直接用於Java代碼)。
// 前端 JS (jQuery AJAX 示例)
function deleteUser(index, name) {
$.ajax({
url: 'DeleteUserServlet', // 或 .jsp/.do 等後端接口
type: 'POST',
data: { id: index, name: name }, // 參數自動編碼為 application/x-www-form-urlencoded
dataType: 'json', // 預期響應格式
success: function(response) {
alert('服務器返回: ' + response.message);
// 根據響應更新頁面
},
error: function(xhr, status, error) {
alert('請求失敗: ' + error);
}
});
}
// 後端 Java (Servlet 示例)
@WebServlet("/DeleteUserServlet")
public class DeleteUserServlet extends HttpServlet {
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// 1. 獲取參數
String idStr = request.getParameter("id");
String name = request.getParameter("name");
// 2. 業務邏輯
boolean success = userService.deleteUser(Integer.parseInt(idStr));
// 3. 構建響應
response.setContentType("application/json;charset=UTF-8");
PrintWriter out = response.getWriter();
out.write("{\"success\":" + success + ", \"message\":\"" + (success ? "刪除成功" : "刪除失敗") + "\"}");
out.flush();
}
}
本質:前後端分離,通過HTTP API契約交互,JS負責展示與用戶交互,Java負責業務邏輯與數據持久化。