@Controller | 处理http请求 |
@RestController | Spring4以后新加的注解,原来返回json须要前端 @ResponseBody配合@Controllerjava |
@RequestMapping | 配合url映射 |
1.1. 该注解须要配合模板(了解便可)来使用。以下代码,这里添加springboot官方推荐的thymeleaf模板:spring
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-thymeleaf</artifactId> </dependency>
可是,如今的开发方式基本是先后端分离的,Java后端只须要提供一些REST接口,返回一些json格式数据给前端便可,不用再去使用模板的方式,使用模板会给性能上带来很大的损耗,因此不推荐使用模板。json
1.2. 能够将 @RequestMapping 注解的 value 属性值写成一个集合,便可响应多种请求:后端
@RestController public class HelloController { @RequestMapping(value = {"/hello","/hi"}, method = RequestMethod.GET) public String say() { return "Hello Spring Boot!"; } }
上面的 say 方法能够响应 localhost:8080/hello,以及localhost:8080/hi安全
1.3. method属性能够不写,这样就既可响应GET请求,也可响应POST请求,可是不一样请求是适应不一样的业务场景的,为了安全起见,推荐加上这个属性值。springboot
@PathVariable | 获取url中的数据 |
@RequestParam | 获取请求参数的值 |
@GetMapping | 组合注解 |
该注解的相关知识和springmvc中差很少,具体能够参见:mvc
https://my.oschina.net/u/3381212/blog/1492116,这里再作一遍解释:app
@RestController @RequestMapping("/hello") public class HelloController { @RequestMapping(value = "/say/{id}", method = RequestMethod.GET) public String say(@PathVariable("id") Integer id) { return "id:"+id; } }
如上面代码所示,@RequestMapping 的 value 属性值为 “/say/{id}”,并在say方法的参数中使用了@PathVariable注解,这样就能够得到请求URL中的占位符参数值,如图:前后端分离
传统URL中传递参数通常形式为:http://localhost:8080/hello/say/?id=123,此时可使用@RequestParam 注解来获取传递参数的值
@RestController @RequestMapping("/hello") public class HelloController { @RequestMapping(value = "/say", method = RequestMethod.GET) public String say(@RequestParam("id") Integer myId) { return "id:"+myId; } }
如上代码所示,运行结果以下:
注意,此时若是不传id的值会报错,能够在@RequestParam注解中增长几个属性值,写成以下形式:
@RestController @RequestMapping("/hello") public class HelloController { @RequestMapping(value = "/say", method = RequestMethod.GET) public String say(@RequestParam(value = "id",required = false,defaultValue = "0") Integer myId) { return "id:"+myId; } }
设置了requird属性,标明id值是否必需要传(不写默认为true),设置defaultValue,标明默认值为“0”(String类型)
@RequestParam注解的相关知识和springmvc中差很少,具体能够参见:http://www.javashuo.com/article/p-ayiiocux-md.html
该注解是一个组合注解,在以下场景中使用会比较简洁:
@RequestMapping(value = "/say", method = RequestMethod.GET),嫌这么写太长,麻烦?
那就换成这种写法:@GetMapping(value = "/say"),效果是同样的。
同理,还有@PostMapping,@PutMapping等等组合注解,简化书写,节省时间