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等等組合註解,簡化書寫,節省時間

相關文章
相關標籤/搜索