@RequestParam、@RequestBody、@ModelAttribute、@PathVariable

1. @RequestParam

value:指定参数名,可以省略;

required:是否必须,true or false;

defaultValue:默认值

方法:public  void AA(@RequestParam Map<String Object> map){ };

参数结构:jsonData=json字符串

结果:map = "jsonData"->"json字符串"(json字符串不会被解析,直接当做字符串处理)

2. @RequestBody(前端需要设置contentType="application/json;charset=utf-8")

通过@requestBody可以将请求体中的JSON字符串绑定到相应的bean上,也可以将其分别绑定到对应的字符串上。

处理HttpEntity传递过来的数据,一般用来处理非Content-Type: application/x-www-form-urlencoded编码格式的数据。

GET请求中,因为没有HttpEntity,所以@RequestBody并不适用。

POST请求中,通过HttpEntity传递的参数,必须要在请求头中声明数据的类型Content-Type,SpringMVC通过使用HandlerAdapter 配置的HttpMessageConverters来解析HttpEntity中的数据,然后绑定到相应的bean上。

@RequestBody用于post请求,不能用于get请求

方法:public  void AA(@RequestParam Map<String Object> map){ };

参数结构:json字符串

结果:map = json字符串会被处理成key-value的形式,接收类型如果是bean,json也会直接被封装成bean

3. @ModelAttribute

将参数绑定到Model对象

当前台界面使用GET或POST方式提交数据时,数据编码格式由请求头的ContentType指定。分为以下几种情况:

1. application/x-www-form-urlencoded,这种情况的数据@RequestParam、@ModelAttribute可以处理,@RequestBody也可以处理。

2. multipart/form-data,@RequestBody不能处理这种格式的数据。(form表单里面有文件上传时,必须要指定enctype属性值为multipart/form-data,意思是以二进制流的形式传输文件。)

3. application/json、application/xml等格式的数据,必须使用@RequestBody来处理。

4. @PathVariable

映射 URL 绑定的占位符

@RequestMapping("test/{ }")

public ApiResult test1(@PathVariable("userId") String userId){

return ApiResult.SUCCESS(JsonUtil.toJsonString(userId));

}

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 16. Web MVC 框架 16.1 Spring Web MVC 框架介绍 Spring Web 模型-视图-...
    此鱼不得水阅读 4,728评论 0 4
  • Spring的模型-视图-控制器(MVC)框架是围绕一个DispatcherServlet来设计的,这个Servl...
    alexpdh阅读 7,510评论 0 3
  • 翻译自Spring官方文档 4.1.2版本 相关文章: Spring参考手册 1 Spring Framework...
    liycode阅读 4,030评论 0 2
  • Jurong Regional Library是周六(24th Sept.)早上去的,本来以为是一间小小的图书馆,...
    BabyAnt阅读 4,032评论 1 0
  • 那一夜,天落雨了,雨点淅淅沥沥的打在玻璃窗上,我静静的躺在床上,看着那只你我都熟悉的娃娃,我盯着它整整一夜,想了又...
    青年旅行阅读 1,634评论 0 1

友情链接更多精彩内容