@Controller

默认返回 templates 目录下的 string.html 页面内容。
在方法中加上 @ResponseBody 注解,可以返回JSON、XML或自定义mediaType的内容

@RestController

直接返回内容,会自动将对象实体转换为JSON格式,视图解析器 InternalResourceViewResolver 不起作用。
@RestController = @Controller + @ResponseBody

@RequestBody

接收请求体中的 JSON 数据,通过实体类的setter方法赋值给属性。
json 的 "" => 实体 String 为 ""
json 的 "" => 实体 Integer、Double 为 null
json 的 null => 实体为 null
@RequestBody 可以与 @RequestParam() 同时使用,@RequestBody 最多只能有一个,@RequestParam() 可以有多个。

以 String 接收数据

@RequestMapping("/index")
public String indexMapping(@RequestBody String jsonStr) {return jsonStr;
}

以对象实体接收数据

// {"name":"hanmeimei","age":12}
@RequestMapping("/index")
public String indexMapping(@RequestBody User user) {return user.toString();
}

以复杂的对象实体接收数据

public class Team {private Integer id;private String name;private List<String> honors;private List<User> members;
}// {
//     "id": 1,
//     "name": "good",
//     "honors": ["very good", "very fast"],
//     "members": [{"name":"hanmeimei","age":12},
//                 {"name":"lilei","age":13}],
// }
@RequestMapping("/index")
public String indexMapping(@RequestBody Team team) {return team.toString();
}

@ResponseBody

将对象实体转换为JSON、XML或自定义mediaType的内容,并在 HTTP response body 中返回

@RequestMapping

将请求映射到控制器上,可以在控制器类和/或方法上使用。

处理单个请求

@RequestMapping("/home")
public class IndexController {@RequestMapping("/index")String indexMapping() {return "Hello from index mapping.";}
}

处理多个请求

@RequestMapping("/home")
public class IndexController {@RequestMapping(value = {"/","/index","/index/*.html","/index/**/*.html"})String indexMultipleMapping() {return "Hello from index multiple mapping.";}
}

处理请求类型

默认是 HTTP GET 类型的。

@RequestMapping(value = "/home", method = RequestMethod.GET)
String get() {}@RequestMapping(value = "/home", method = RequestMethod.DELETE)
String delete() {}@RequestMapping(value = "/home", method = RequestMethod.POST)
String post() {}@RequestMapping(value = "/home", method = RequestMethod.PUT)
String put() {}@RequestMapping(value = "/home", method = RequestMethod.PATCH)
String patch() {}

处理请求类型快捷方式

@GetMapping(value = "/home")
String get() {}@DeleteMapping(value = "/home")
String delete() {}@PostMapping(value = "/home")
String post() {}@PutMapping(value = "/home")
String put() {}@PatchMapping(value = "/home")
String patch() {}

处理生产和消费对象

public class IndexController {// 生产 application/JSON 响应@RequestMapping(value = "/prod", produces = {"application/JSON"})@ResponseBodyString getProduces() {return "Produces attribute";}// 消费 application/JSON & application/XML 请求@RequestMapping(value = "/cons", consumes = {"application/JSON","application/XML"})@ResponseBodyString getConsumes() {return "Consumes attribute";}
}

处理消息头

public class IndexController {// 处理 Content-Type=application/json 的请求@RequestMapping(value = "/head", headers = {"Content-Type=application/json"})String head() {return "Mapping applied along with headers";}
}
public class IndexController {@RequestMapping(value = "/head", headers = {"Content-Type=text/plain","Content-Type=application/json"})String head() {return "Mapping applied along with headers";}
}

处理请求参数

public class IndexController {@RequestMapping(value = "/fetch", params = {"personId=10"})String getParams10(@RequestParam("personId") String id) {return "Fetched parameter using params attribute = " + id;}@RequestMapping(value = "/fetch", params = {"personId=20"})String getParams20(@RequestParam("personId") String id) {return "Fetched parameter using params attribute = " + id;}
}

处理动态 URI

public class IndexController {@RequestMapping(value = "/fetch/{id}")String getDynamicUriValue(@PathVariable String id) {return "Dynamic URI parameter fetched";}@RequestMapping(value = "/fetch/{id:\d+}/{name}")String getDynamicUriValueRegex(@PathVariable("id") int id, @PathVariable("name") String name) {return "Dynamic URI parameter fetched using regex";}
}

默认的处理方法

public class IndexController {@RequestMapping()String default () {return "This is a default method for the class";}
}

参考 RequestBody的使用

Spring 处理请求和响应相关的注解相关推荐

  1. Android中使用logger打印完整的okhttp网络请求和响应的所有相关信息(请求行、请求头、请求体、响应行、响应行、响应头、响应体)

    如果你的项目中的网络请求库是Retrofit的话,他的底层封装的是OkHttp,通常调试网络接口时都会将网络请求和响应相关数据通过日志的形式打印出来.OkHttp也提供了一个网络拦截器okhttp-l ...

  2. Spring Boot 2.x基础教程:如何扩展XML格式的请求和响应

    在之前的所有Spring Boot教程中,我们都只提到和用到了针对HTML和JSON格式的请求与响应处理.那么对于XML格式的请求要如何快速的在Controller中包装成对象,以及如何以XML的格式 ...

  3. Spring Boot中如何扩展XML请求和响应的支持

    在之前的所有Spring Boot教程中,我们都只提到和用到了针对HTML和JSON格式的请求与响应处理.那么对于XML格式的请求要如何快速的在Controller中包装成对象,以及如何以XML的格式 ...

  4. Spring Cloud Gateway-ServerWebExchange核心方法与请求或者响应内容的修改

    Spring Cloud Gateway-ServerWebExchange核心方法与请求或者响应内容的修改 前提 本文编写的时候使用的Spring Cloud Gateway版本为当时最新的版本Gr ...

  5. Spring Boot中扩展XML请求和响应的支持

    在Spring Boot中,我们大多时候都只提到和用到了针对HTML和JSON格式的请求与响应处理.那么对于XML格式的请求要如何快速的在Controller中包装成对象,以及如何以XML的格式返回一 ...

  6. Spring Boot使用AOP在控制台打印请求、响应信息

    AOP称为面向切面编程,在程序开发中主要用来解决一些系统层面上的问题,比如日志,事务,权限等. AOP简介 AOP全称Aspect Oriented Programming,面向切面,AOP主要实现的 ...

  7. Spring AOP 面向切面编程相关注解

    Aspect Oriented Programming 面向切面编程 在Spring中使用这些面向切面相关的注解可以结合使用aspectJ,aspectJ是专门搞动态代理技术的,所以比较专业. 需要在 ...

  8. 基于Spring AOP的统一响应体的实现(注解版)

    基于Spring AOP的统一响应体的实现(注解版) 一.前言 在上一篇系列中 我们 统一参数校验,统一结果响应,统一异常处理,统一错误处理,统一日志记录,统一生成api文档, 对于统一数据响应返回规 ...

  9. 【JavaLearn】#(23)JSP相关语法、HTTP协议、Servlet介绍、Servlet生命周期、请求和响应、相对路径、转发和重定向

    1. JSP简单内容 1.1 JavaEE JavaEE 包含JSP JavaEE是一个开发分布式企业级应用的规范和标准.JavaEE包含之前学过的所有内容(JavaSE) 真正开发中,很少使用Jav ...

最新文章

  1. Word2010开发——操作文档
  2. linux使用opengl获取纹理id,opengl – 通过纹理id获取纹理目标
  3. MAT之DT:DT实现根据乳腺肿瘤特征向量高精度预测肿瘤的是恶性还是良性
  4. 基本算法之前缀和与差分的是使用
  5. kotlin 查找id_Kotlin程序查找Square区域
  6. 数据挖掘算法_技术分享|大数据挖掘算法之KNNk近邻算法
  7. 在RHEL5/CentOS5上配置使用Open×××
  8. Pytorch+Tensorboard混淆矩阵可视化
  9. script async和defer
  10. 计算机网络原理201810自考,2018年10月自考04741计算机网络原理试卷及答案
  11. 索尼Xperia 5 II官方高清渲染图曝光:还是那个熟悉的小屏旗舰
  12. java系统性能优化之mysql数据库优化
  13. 计算机组成原理——总线标准
  14. 反射+泛型+注解(demo)
  15. SLAM常见面试题集锦
  16. ROS创建工作空间和source的解释
  17. XSS绕过,XSS过滤速查,XSS绕过姿势
  18. Springboot---Model,ModelMap,ModelAndView
  19. 刚从阿里、头条面试回来,java字符串截取后四位
  20. 软件测试基础-更高级别的测试、调试、极限测试

热门文章

  1. jquery 表单验证
  2. PHP 隐藏真实下载地址
  3. pythonの鉴黄之路(五)——强行解析json串
  4. 【AI视野·今日Robot 机器人论文速览 第十七期】Thu, 1 Jul 2021
  5. 【anaconda】激活环境失败-bash: activate:No such file/没有那个文件或目录
  6. 华科08年计算机考研复试机试
  7. mysql-多表查询-内联查询左查询
  8. 单元测试框架之Robolectric踩坑
  9. 通过fiddler和逍遥模拟器模拟抓包android手机
  10. 移动硬盘提示无法访问使用驱动器中的光盘之前需要格式化,里面的数据怎么恢复...