一. 几种Controller注解:

@Controller

处理http请求

@RestController

Spring4之后新加的注解,原来返回json需要

@ResponseBody配合@Controller

@RequestMapping

配合url映射


1. @Controller:

    1.1. 该注解需要配合模板(了解即可)来使用。如下代码,这里添加springboot官方推荐的thymeleaf模板:

<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-thymeleaf</artifactId>
		</dependency>

    但是,现在的开发方式基本是前后端分离的,Java后端只需要提供一些REST接口,返回一些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请求,但是不同请求是适应不同的业务场景的,为了安全起见,推荐加上这个属性值。

 



二. 参数类注解

@PathVariable

获取url中的数据

@RequestParam

获取请求参数的值

@GetMapping

组合注解


1. @PathVariable:

    该注解的相关知识和springmvc中差不多,具体可以参见:

,这里再做一遍解释:

@RestController
@RequestMapping("/hello")
public class HelloController {

    @RequestMapping(value = "/say/{id}", method = RequestMethod.GET)
    public String say(@PathVariable("id") Integer id) {
        return "id:"+id;
    }

}

“/say/{id}”,并在say方法的参数中使用了@PathVariable注解,这样就可以获得请求URL中的占位符参数值,如图:

    

Springboot对controller进行测试 springboot调用controller_python



2. @RequestParam:

?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;
    }

}

    如上代码所示,运行结果如下:

    

Springboot对controller进行测试 springboot调用controller_python_02

    注意,此时如果不传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中差不多,具体可以参见:



3. @GetMapping:

    该注解是一个组合注解,在如下场景中使用会比较简洁:

@RequestMapping(value = "/say", method = RequestMethod.GET),嫌这么写太长,麻烦?

那就换成这种写法:@GetMapping(value = "/say"),效果是一样的。

同理,还有@PostMapping,@PutMapping等等组合注解,简化书写,节省时间