springMVC 中接收前端传递的对象、数组等数据的方式详解
2017-09-19 20:18
911 查看
1. 引言
在springMVC中,controller中方法的参数是自动注入的,在使用注解的方式下,通常有:
@RequestParam: 取querystring当中的参数
@PathVariable: 取 在@RequestMapping中定义的占位符中的参数(/test/{id})
@RequestBody: 取request 这个消息体 (可以组装json对象)
在不使用注解的情况下,默认有一些对象可以自动注入如:
HttpServletRequest
HttpServletResponse
MultipartFile
MultipartRequest
除此之外不使用注解的情况下,也可以接受前台传入的querystring中的参数
2. 接受前端传递的对象
从querystring中的参数中获取:
@RequestParam:接受对象类型(Integer、String、Boolean等基本数据类型),不能接收自定义类型。
不带注解:接受基本数据类型,若接收类型为自定义类型,会组装参数中与自定义类型属性名和类型相符的参数。
例:
后台:
结论及分析:
1.获取自定义类型的对象时,不使用注解即可以获取
2.在组装对象时可以使用以被获取过的参数
从请求体(body)中获取:
用到的注解@RequestBody
当请求体中是一段json数据时,@RequestBody会解析该json字符串并将其注入指定的自定义类型中。
例:
后台代码:
结果:
结论:通过@RequestBody的方式可以接收以json数据传输的对象,但前提是请求的Content-Type必须为application/json,并且引入了jackson-databind包。
3. 接收前端传递的数组
接收数组可以使用注解方式的@RequestParam、@RequestBody或者无注解的方式,也可以同时使用他们三个
在接受数组时,默认按照方法的参数名来映射请求的参数,目前很多前端框架喜欢传递数组时在请求参数后面加上"[]",所以使用@RequestParam时可以规定value使之对应如@RequestParam("ids[]") Integer[] ids。
例:
后台:
结果:
4. 总结
在项目中,能够灵活的使用各种传参方式能灵活的实现与前端的交互,总之,自己喜欢的就是最好的。
在springMVC中,controller中方法的参数是自动注入的,在使用注解的方式下,通常有:
@RequestParam: 取querystring当中的参数
@PathVariable: 取 在@RequestMapping中定义的占位符中的参数(/test/{id})
@RequestBody: 取request 这个消息体 (可以组装json对象)
在不使用注解的情况下,默认有一些对象可以自动注入如:
HttpServletRequest
HttpServletResponse
MultipartFile
MultipartRequest
除此之外不使用注解的情况下,也可以接受前台传入的querystring中的参数
2. 接受前端传递的对象
从querystring中的参数中获取:
@RequestParam:接受对象类型(Integer、String、Boolean等基本数据类型),不能接收自定义类型。
不带注解:接受基本数据类型,若接收类型为自定义类型,会组装参数中与自定义类型属性名和类型相符的参数。
例:
后台:
@ResponseBody @RequestMapping("/accept-object") public String acceptObject( @RequestParam Integer studentId, @RequestParam String studentName, Integer studentAge, Student student ) { logger.debug("---->" + studentId); logger.debug("---->" + studentName); logger.debug("---->" + studentAge); logger.debug("---->" + JSON.toJSONString(student)); return studentId + ">>" + studentName + ">>" + studentAge + ">>" + JSON.toJSONString(student); }前端:
<div> <form action="${pageContext.request.contextPath}/accept-object"> <span>学生id</span> <input type="number" name="studentId" placeholder="studentId"><br> <span>学生姓名</span> <input type="text" name="studentName" placeholder="studentName"><br> <span>学生年龄</span> <input type="number" name="studentAge" placeholder="studentAge"><br> <input type="submit" value="提交"> </form> </div>过程及结果:
结论及分析:
1.获取自定义类型的对象时,不使用注解即可以获取
2.在组装对象时可以使用以被获取过的参数
从请求体(body)中获取:
用到的注解@RequestBody
当请求体中是一段json数据时,@RequestBody会解析该json字符串并将其注入指定的自定义类型中。
例:
后台代码:
@ResponseBody @RequestMapping("/accept-json-object") public String acceptObject( @RequestBody Student student ) { logger.debug("---->" + JSON.toJSONString(student)); return JSON.toJSONString(student); }测试:
结果:
结论:通过@RequestBody的方式可以接收以json数据传输的对象,但前提是请求的Content-Type必须为application/json,并且引入了jackson-databind包。
3. 接收前端传递的数组
接收数组可以使用注解方式的@RequestParam、@RequestBody或者无注解的方式,也可以同时使用他们三个
在接受数组时,默认按照方法的参数名来映射请求的参数,目前很多前端框架喜欢传递数组时在请求参数后面加上"[]",所以使用@RequestParam时可以规定value使之对应如@RequestParam("ids[]") Integer[] ids。
例:
后台:
@ResponseBody @RequestMapping(value = "/accept-arr-object") public String acceptArray( Integer[] ids, @RequestParam("ids[]") Integer[] id2s, @RequestBody Integer[] id3s ) { logger.debug("---->" + JSON.toJSONString(ids)); logger.debug("---->" + JSON.toJSONString(id2s)); logger.debug("---->" + JSON.toJSONString(id3s)); return JSON.toJSONString(ids) + ">>" + JSON.toJSONString(id2s) + ">>" + JSON.toJSONString(id3s); }测试:
结果:
4. 总结
在项目中,能够灵活的使用各种传参方式能灵活的实现与前端的交互,总之,自己喜欢的就是最好的。
相关文章推荐
- springmvc和js前端的数据传递和接收方式
- springmvc和js前端的数据传递和接收方式
- springMvc 前端用json的方式向后台传递对象数组
- springMVC中前端将传递数据传递到后端后端的接收方式
- springmvc和js前端的数据传递和接收方式
- springMVC如何接收前端传递的数组数据
- springmvc和js前端的数据传递和接收方式(两种)
- springmvc 接收前端数据 map。数组
- 前端表单方式提交,SpringMVC后端以对象参数形式接收
- Springmvc-将前端数据映射成JAVA对象接收实例
- SpringMVC作为Controller向前端传递JSON数据,前端用Extjs接收
- SpringMVC参数值的传递(参数接收,数组接收,模型接收,多个模型接收以及数据回显,批量操作)
- SpringMVC作为Controller向前端传递JSON数据,前端用Extjs接收
- SpringMVC接收ajax传递的list或数组对象
- springmvc接收前台(可以是ajax)传来的数组list,map,set等集合,复杂对象集合等图文详解
- 详解springmvc 接收json对象的两种方式
- SpringMVC的controller向jsp传递数据的五种方式详解
- springmvc接收前台(可以是ajax)传来的数组list,map,set等集合,复杂对象集合等图文详解
- springmvc接收前台(可以是ajax)传来的数组list,map,set等集合,复杂对象集合等图文详解
- springmvc接收前台(可以是ajax)传来的数组list,map,set等集合,复杂对象集合等图文详解