request.getParameter()获取返回null值或者为空串的问题

本文总结了在Servlet中使用request.getParameter()获取POST请求参数时可能遇到的空值问题。对于POST请求,参数可以放在data或params属性中。当参数在data中时,它以JSON对象形式发送,需要转化为对象处理;而在params中则可以直接通过request.getParameter()获取。理解这一差异对于正确处理POST请求至关重要。

在serlvet原生的API中,我们经常使用request.getParameter获取请求参数,在一次小测验中,我发现有时候返回值为空值,有时候返回值为空串。也是上网查了一下,在这里做一个小总结。

这里为什么只提到了post请求,因为get请求都是把参数放在params属性下,所以没得选,发送过程中参数被拼接到了url上,从控制台看url后面参数是?param1=XX&&post请求的情况比较多

xios发送post请求参数有两种传法,一种是放在data属性中,如果传参中含有引号、等号、拼接的json串或传参的数据量较大时只能用这种

这种方式如果在后台request.getParameter()请求获取到的值为null,后面再执行这个代码也会报空指针异常,因为data返回的值是json对象形式

 想要用data属性获取值的话要使用要把它转换为对象传过来

一种是放在params属性中,适合传参较少且数据简单的情况

 使用params属性再后台用request.getParameter()就可以获取到想要的值

 

 

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" %> <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title></title> <!-- <link rel="stylesheet" href="<%=request.getContextPath() %>/css2/index2.css" type="text/css"></link> --> <link rel="stylesheet" href="<%=request.getContextPath() %>/css/theme.blue.css" type="text/css"></link> <body> <form action="<%=request.getContextPath() %>/g?m=getList" method="post"> <table id="myTable" class="tablesorter-blue"> <thead> <tr> <th>订单号:<input type="text" name="sid" id="sid"></th> </tr> <tr> <th>供应商<select name="sname" id="sname"> <option value="">-请选择-</option> </select></th> </tr> <tr> <th>预计到货时间:<input type="text" name="sdate" id="sdate"></th> </tr> </thead> <tbody> </tbody> </table> </form> </body> <script type="text/javascript" src="<%=request.getContextPath() %>/js/jquery-1.8.2.min.js"></script> <script type="text/javascript" src="<%=request.getContextPath() %>/js/random.js"></script> <script type="text/javascript" src="<%=request.getContextPath() %>/js/jquery.tablesorter.js"></script> <script type="text/javascript" src="<%=request.getContextPath() %>/My97DatePicker/WdatePicker.js"></script> <script src="https://unpkg.com/dayjs@1.8.21/dayjs.min.js"></script> <script src="https://cdn.staticfile.org/jquery-cookie/1.4.1/jquery.cookie.min.js"></script> <script type="text/javascript"> let sname=$("#sname") $.post( "<%=request.getContextPath()%>/my?my=zhan", {"sname":sname}, function (obj){ for (let i = 0; i < obj.length; i++) { $("#sid").val(obj[i].sid) } },"json" ) </script> </html> 为啥后端接不到
最新发布
12-27
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值