上一篇
场景引入:
小明的购物车页面需要实时更新商品数量,但每次点击"+"按钮都刷新整个页面?太卡了!🤯 作为前端开发,他决定用AJAX技术悄悄把数据发给后端的Servlet处理,既流畅又优雅~ 下面我们就手把手实现这个功能!
<button id="btn">点我发送数据</button> <div id="result"></div>
HttpServlet
并重写doPost
方法 let xhr = new XMLHttpRequest(); // 老派写法 // 或用更现代的 fetch API(这里先展示传统写法)
let data = { username: "小明", action: "add_to_cart", itemId: 123 };
xhr.open("POST", "/yourServletPath", true); // true表示异步 xhr.setRequestHeader("Content-Type", "application/json"); // 告诉后端这是JSON
xhr.onreadystatechange = function() { if (xhr.readyState === 4 && xhr.status === 200) { document.getElementById("result").innerHTML = "服务器说:" + xhr.responseText; } else if (xhr.status === 404) { console.error("⚠️ 路径找不到!检查Servlet配置"); } };
xhr.send(JSON.stringify(data)); // 别忘了转换JSON字符串!
@WebServlet("/yourServletPath") public class DataServlet extends HttpServlet { protected void doPost(HttpServletRequest request, HttpServletResponse response) throws IOException { // 读取JSON数据 StringBuilder sb = new StringBuilder(); try (BufferedReader reader = request.getReader()) { String line; while ((line = reader.readLine()) != null) { sb.append(line); } } // 解析JSON(需要Gson/jackson库) JsonObject data = JsonParser.parseString(sb.toString()).getAsJsonObject(); String username = data.get("username").getAsString(); // 业务处理... // 返回响应 response.setContentType("text/plain"); response.getWriter().write("处理成功!用户:" + username); } }
@WebServlet
注解路径是否匹配前端请求路径 Content-Type
和实际发送的数据格式一致 fetch("/yourServletPath", { method: "POST", headers: { "Content-Type": "application/json" }, body: JSON.stringify(data) }) .then(response => response.text()) .then(data => console.log(data));
response.setContentType("application/json"); response.getWriter().write("{\"status\":\"success\"}");
安全性:
调试技巧:
System.out.println
打印接收到的原始数据 性能优化:
本文由 市思雁 于2025-08-02发表在【云服务器提供商】,文中图片由(市思雁)上传,本平台仅提供信息存储服务;作者观点、意见不代表本站立场,如有侵权,请联系我们删除;若有图片侵权,请您准备原始证明材料和公证书后联系我方删除!
本文链接:https://up.7tqx.com/wenda/513056.html
发表评论