这一篇主要总结一下,SpringBoot中关于Controller的相关开发。
我们知道Controller是用来处理Http请求的,这里主要总结一下@RestController、@Controller、@ResponseBody、@RequestMapping、@GetMapping、@PathVariable、@RequestParam以及@RequestBody注解。
1、@RestController、@ResponseBody、@Controller
@RestController 是Spring4之后新增的注解,这是一种组合注解,原来返回JSON或者响应需要@ResponseBody配合@Controller使用(@ResponseBody就是用来标记返回值是作为响应直接返回的,如果返回值是一个对象类型,那么它就会转成JSON),而现在只需要一个@RestController 注解就可以代替,下图两者是等同的。
如果我们不加@RestController或者使用@Controller时不加@ResponseBody,那么返回值是String的时候,SpringBoot会认为这是一个页面路径,会通过DispatcherServlet(前端控制器)去找该页面,显然我们不存在就会报错,这和SpringMVC是一样的,我们可以测试返回一个页面,这里使用模板引擎thmeleaf,在pom中引入依赖,
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-thymeleaf</artifactId>
</dependency>
然后新增一个html,
2、@RerquestMapping、@GetMapping
@RerquestMapping 就是用来配置URL映射的相关信息,可以简单的加在类上,也可以加在方法上,value用来说明URL,method用来说明请求方式。
如果说想要/say和/hi多个URL都能访问到,只需要设置value为集合就行,如下:
对于method而言,
对于多种请求方式,Spring提供了组合注解简化开发,如下:
二者时等同的。
3、@PathVariable
@PathVariable 是用来获取url中的数据
这样在通过/localhost:8080/say/100时就可以取到100了。
4、@RequestParam
@RequestParam 用来获取请求参数中的值,如get方式URL中?后的各个参数或者post提交的原生form表单值。该注解有几种属性,value为参数名称,defaultValue为参数默认值,required用来说明参数是否必须。
上图说明,id参数可以不传,不传的话默认给值0。
像上图中不指定required=false的话,默认是true,也就是参数是必传的,若不传的话,是映射不到这个Controller,可能404
需要注意:默认@RequestParam也可以省略,如下图所示,这种其实就相当于@RequestParam(value="id", required=false),参数可传可不传,但是不传的话,不会给默认值。