SpringBoot系列(3)——Controller的使用

一. 几种Controller注解:

@Controller 处理http请求
@RestController

Spring4以后新加的注解,原来返回json须要前端

@ResponseBody配合@Controllerjava

@RequestMapping 配合url映射

1. @Controller:

    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 组合注解

1. @PathVariable:

    该注解的相关知识和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中的占位符参数值,如图:前后端分离

    

2. @RequestParam:

    传统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

3. @GetMapping:

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

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

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

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

相关文章
相关标签/搜索