添加数据库记录时参数返回null问题排查求助
问题定位与解决方案
嘿,我一眼就揪出你代码里的核心问题啦,这就是参数返回null的直接原因:
1. 参数名称完全不匹配
你前端发送的参数名和后端Servlet里要获取的参数名对不上号:
- 在
sample.js里,你构造的请求参数是id和name:var body = 'action=add' + '&id=' + post_id.value + '&name=' + post_name.value; - 但在
PostServlet.java的processRequest方法里,你却在找post_id和post_name:System.out.println("post_id: " + request.getParameter("post_id")); System.out.println("post_name: " + request.getParameter("post_name"));
这就像你喊“张三”递东西,结果站在面前的是“李四”,自然接不到啦😉
修复方案(二选一,更推荐第一种):
- 方案一:修改前端参数名,适配后端
把JS里的参数名改成和后端一致的:var body = 'action=add' + '&post_id=' + post_id.value + '&post_name=' + post_name.value; - 方案二:修改后端参数名,适配前端
调整Servlet里的参数获取逻辑,对应前端的参数名:System.out.println("post_id: " + request.getParameter("id")); System.out.println("post_name: " + request.getParameter("name")); postEntity.setPost_id(Integer.parseInt(request.getParameter("id"))); postEntity.setPost_name(request.getParameter("name"));
2. 额外优化:处理请求编码
虽然这不是当前null问题的诱因,但为了避免后续中文参数乱码,建议在processRequest方法开头添加编码设置:
request.setCharacterEncoding("UTF-8"); response.setCharacterEncoding("UTF-8");
验证方法
修改后,你可以打开浏览器F12开发者工具的Network面板,触发添加操作后查看POST请求的Form Data,确认参数名和值都正确发送,再看后端控制台,就能拿到正常的参数啦!
内容的提问来源于stack exchange,提问作者Кирилл Балашов
相关产品推荐
相关产品推荐

