You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

添加数据库记录时参数返回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,提问作者Кирилл Балашов

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.12 05:13:14