springboot如何接收get和post请求参数
一、get请求前端传参和后台接收的写法:
1、ajax请求:
$.ajax({
url:'/user/login3',
//contentType: 'application/json;charset=utf-8', //这一句添加与否,效果都一样
data:{"userName":"张三", "userPass":"123"},
method:'get',
dataType:'json',
success:function(res){
if(res.successful == true || res.successful=='true'){
alert("ok");
}else{
alert("用户名或密码错误");
}
},
error:function (data) {
alert("用户名或密码错误");
}
});此时查看浏览器的network选项,会看到请求地址变成:
Request URL:http://localhost:8082/user/login3?userName=%E5%BC%A0%E4%B8%89&userPass=123
即请求参数拼接到url地址栏后,并且已经编码了。
2、针对这种请求,后台接收参数有三种写法:
1)、参数名称与前端key对应,不加任何注解:
@RequestMapping(value = "/login3", method = RequestMethod.GET) Map<String, Object> login4( String userName, String userPass)
2)、参数名称与前端key对应,添加@RequestParam注解:
@RequestMapping(value = "/login3", method = RequestMethod.GET) Map<String, Object> login2(@RequestParam String userName, @RequestParam String userPass)
3)、使用@RequestParam注解,将所有的参数封装到Map<String,Object>对象:
@RequestMapping(value = "/login3", method = RequestMethod.GET) Map<String, Object> login3(@RequestParam Map<String,Object> param)
此时,后台通过param.get(“userName”)来获取参数的值。@RequestParam注解换成@RequestBody注解无效,ajax请求报400错误,进入不了后台对应的方法。
二、post请求前端传参和后台接收的写法:
3、ajax请求:
$.ajax({
url:'/user/login3',
data:{"userName":"张三", "userPass":"123"},
method:'post',
dataType:'json',
success:function(res){
if(res.successful == true || res.successful=='true'){
alert("ok");
}else{
alert("用户名或密码错误");
}
},
error:function (data) {
alert("用户名或密码错误");
}
});4、针对3的ajax请求,后台的接口参数写法同2。
5、ajax请求:
$.ajax({
url:'/user/login3',
contentType: 'application/json;charset=utf-8',
data:JSON.stringify({"userName":"张三", "userPass":"123"}),
method:'post',
dataType:'json', 不同的地方在于添加了contentType,data需要改成序列化的json字符串。
6、针对5这种ajax请求,2的三种写法后台都拿不到值,或者直接报400错误。需要用另外一种写法:
@RequestMapping(value = "/login3", method = RequestMethod.POST)
Map<String, Object> login3(@RequestBody Map<String,Object> param) {
try {
System.out.println("userName==" + param.get("userName") +", userPass==" + param.get("userPass")); 这里的param名称可以随便取,可以用别的名称代替;Map<String,Object>也可以替换成自定义的POJO类名,比如自定了User类,包含了userName和userPass两个属性,则@RequestBody User user也可以去到前端传递的值,此时用user.getUserName()就可以了。
或者:
@RequestMapping(value = "/login2", method = RequestMethod.POST)
Map<String, Object> login2(@RequestBody String userInfo) {
try {
JSONObject json = JSONObject.parseObject(userInfo);
System.out.println("userName==" + json.getString("userName") +", userPass==" + json.getString("userPass"));这里的userInfo名称是随便取,可以用别的名称代替;把这里的@RequestBody替换成@RequestParam,会报400错误。
到此这篇关于springboot接收get和post请求参数的文章就介绍到这了,更多相关springboot接收get和post参数内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
相关文章
SpringBoot+MyBatisPlus对Map中Date格式转换处理的方法详解
在 SpringBoot 项目中, 如何统一 JSON 格式化中的日期格式。本文将为大家介绍一种方法:利用MyBatisPlus实现对Map中Date格式转换处理,需要的可以参考一下2022-10-10
Java JVM运行时数据区(Run-Time Data Areas)
运行时数据区,是java虚拟机定义的在程序执行期间使用的各种运行时的数据区,通过JVM运行时数据区图例给大家展示的很详细,对JVM 运行时数据区相关知识感兴趣的朋友跟随小编一起看看吧2021-06-06
SpringBean管理与Spring Boot自动配置原理解析
在Spring中,Bean的作用域(Scope)决定了Bean的实例化方式以及其生命周期,下面给大家介绍SpringBean管理与Spring Boot自动配置原理解析,感兴趣的朋友一起看看吧2025-05-05


最新评论