第一部分 关于post
post的headers 的Content-Type有很多,这里着重区分两种
第一种
application/application/x-www-form-urlencoded
这一种也就是俗称的表单提交方式
参数的提交形式是类似于url拼接的,也就是post的请求体body里面的存放的内容形如:
a="123"&b=520&c=true&d="你好"
这种
第二种
application/json
这种也就是所谓的json提交,post的请求体body里面的存放的内容形如:
{
"a":"",
"b":"",
"c":"",
"d":""
}
第二部分 关于java的servlet 的取参
HttpServletRequest request
针对
1.application/application/x-www-form-urlencoded 的url参数 2.body参数 3.application/json的url参数
推荐方式:
request.getParam("前端参数名")
针对
application/json body参数
BufferedReader streamReader = new BufferedReader( new InputStreamReader(request.getInputStream(), "UTF-8"));
StringBuilder responseStrBuilder = new StringBuilder();
String inputStr;
while ((inputStr = streamReader.readLine()) != null)
responseStrBuilder.append(inputStr);
最终responseStrBuilder里面就取到所有参数的json字符串,最后自己百度一下怎么把StringBuilderjson串转化为JsonObject
第三部分 关于spring的注解接受参数
1.@requestParam 只能接收到1.application/application/x-www-form-urlencoded 的url参数 2.body参数 3.application/json的url参数
这里提供一个requestParam接受庞大前端参数的解决方案,就是让前端将参数转成json字符串,包在一个key里面传过来,这样后台能取到json字符串,想转map或是model都很方便了,不然后台接口方法的参数太多了,很不友好
2.@requestBody 用于接收application/json 的body参数
A.可以用@requestBody Map<String,Object> map来接收,然后在通过map的key去取想要的参数
B.@requestBody Model model来接收 Model为自己定义的实体类,要注意前端body体里的参数要与Model字段一致