Spring 处理请求和响应相关的注解
@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"
})
@ResponseBody
String getProduces() {
return "Produces attribute";
}
// 消费 application/JSON & application/XML 请求
@RequestMapping(value = "/cons", consumes = {
"application/JSON",
"application/XML"
})
@ResponseBody
String 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";
}
}
Spring 处理请求和响应相关的注解的更多相关文章
- spring基础---->请求与响应的参数(一)
这里面我们主要介绍一下spring中关于请求和响应参数数据的问题.爱,从来就是一件千回百转的事.不曾被离弃,不曾受伤害,怎懂得爱人?爱,原来是一种经历. spring中的请求与响应 一.spring中 ...
- spring框架中三层架构相关的注解
做了这么多年的C++,再去学Java,确实发现,语言都是相通的,即使是Java的那么多生态,理解起来也并不费劲 Spring 框架目前还在学习中,处于 Tourist 阶段,目前只求会做,不求原理,等 ...
- Spring_02 注入类型值、利用引用注入类型值、spring表达式、与类相关的注解、与依赖注入相关的注解、注解扫描
注意:注入基本类型值在本质上就是依赖注入,而且是利用的set方式进行的依赖注入 1 注入基本类型的值 <property name="基本类型的成员变量名" value=&q ...
- tornado的请求与响应
tornado请求与响应相关 一.配置文件config.py 中的settings 有哪些配置: debug:设置tornado是否工作再调试模式下,默认为false 即工作再生产模式下 true的特 ...
- Spring Boot 2.x基础教程:如何扩展XML格式的请求和响应
在之前的所有Spring Boot教程中,我们都只提到和用到了针对HTML和JSON格式的请求与响应处理.那么对于XML格式的请求要如何快速的在Controller中包装成对象,以及如何以XML的格式 ...
- Spring Boot使用AOP在控制台打印请求、响应信息
AOP称为面向切面编程,在程序开发中主要用来解决一些系统层面上的问题,比如日志,事务,权限等. AOP简介 AOP全称Aspect Oriented Programming,面向切面,AOP主要实现的 ...
- Spring Boot中如何扩展XML请求和响应的支持
在之前的所有Spring Boot教程中,我们都只提到和用到了针对HTML和JSON格式的请求与响应处理.那么对于XML格式的请求要如何快速的在Controller中包装成对象,以及如何以XML的格式 ...
- Spring Boot中扩展XML请求和响应的支持
在Spring Boot中,我们大多时候都只提到和用到了针对HTML和JSON格式的请求与响应处理.那么对于XML格式的请求要如何快速的在Controller中包装成对象,以及如何以XML的格式返回一 ...
- Spring Cloud Gateway修改请求和响应body的内容
欢迎访问我的GitHub https://github.com/zq2599/blog_demos 内容:所有原创文章分类汇总及配套源码,涉及Java.Docker.Kubernetes.DevOPS ...
随机推荐
- Flask + Nginx + uwsgi 部署过程
一.安装Flask 1.itsdangerous tar xvf itsdangerous-0.23.tar.gz cd itsdangerous-0.23/ python setup.py inst ...
- oracle 存储过程及REF CURSOR的使用
基本使用方法及示例 1.基本结构: CREATE OR REPLACE PROCEDURE 存储过程名字 (参数1 IN NUMBER,参数2 IN NUMBER) AS 变量1 INTEGER := ...
- 【编程思想】【设计模式】【创建模式creational 】工厂模式factory_method
Python版 https://github.com/faif/python-patterns/blob/master/creational/factory_method.py #!/usr/bin/ ...
- Apifox(2)快速上手apifox
快速上手 使用场景 Apifox 是接口管理.开发.测试全流程集成工具,使用受众为整个研发技术团队,主要使用者为前端开发.后端开发和测试人员. 前端开发 接口文档管理 接口数据 Mock 接口调试 前 ...
- 我的第一篇博客blog,笑哭
我的第一篇博客blog Markdown学习 一级标题:#加一个空格 加 文字, 二级标题:加2个##以此类推 字体 粗体:hello world!字体前有二个星号,字体后有二个星号 斜体:hello ...
- Tableau如何绘制凹凸图
一.把订单日期拖拽至列,把销售额拖拽至行,类别拖拽至标记,并把订单日期拖拽至筛选器选择2017年 二.创建计算字段销售排名 三.将刚刚创建的销售排名拖拽至行,计算依据-类别 四.销量排名拖拽成两个,图 ...
- android 基于dex的插件化开发
安卓里边可以用DexClassLoader实现动态加载dex文件,通过访问dex文件访问dex中封装的方法,如果dex文件本身还调用了native方法,也就间接实现了runtime调用native方法 ...
- java 输入输出IO流:标准输入/输出System.in;System.out;System.err;【重定向输入System.setIn(FileinputStream);输出System.setOut(printStream);】
Java的标准输入输出分别通过System.in和System.out来代表的,在默认情况下它分别代表键盘和显示器,当程序通过System.in来获取输入时,实际上是从键盘读取输入 当程序试图通过 S ...
- 动态导入模块__import__("str") importlib标准库
解释器内部使用的为__import__('str') #!/usr/bin/env python # Author:Zhangmingda print('我是aa类 ') #被import的时候就执行 ...
- X-Tim开发日志
1.X-Tim--------一个极客风的手表 引言 很久之前就看到FASTSHIFT,但是水平太差,可是又想做一个这样的手表,于是在学习了FASTSHIFT的页面管理之后,也开始了X-Tim的制作. ...