1. 程式人生 > >REST風格以及SpringMVC的引數傳遞

REST風格以及SpringMVC的引數傳遞

一.REST風格的簡單介紹

REST的含義:representational state transfer(表象性狀態轉變),表述性狀態轉移是一組架構約束條件和原則。

REST風格是一種把所有事物都定義為資源的思想,是一種特殊的web服務的架構風格。

資源識別符號就是URI(Uniform Resource Identifier),REST通過定義不同的URL對所有的資源進行唯一標識。

REST架構的基本原則
 網路上的所有事物都被抽象為資源

 每個資源都有一個唯一的資源識別符號

 同一個資源具有多種表現形式(xml,json等)

 對資源的各種操作不會改變資源識別符號

 所有的操作都是無狀態的

 符合REST原則的架構方式即可稱為RESTful

REST延伸出來RESTful,RESTful含義為REST式的,指的是嚴格遵守REST風格的東西,例如Restful web service。

二.SpringMVC的引數傳遞

註解方式:@requestMapping,有value屬性(一個引數時預設)指定url路徑解析。

@Controller
@RequestMapping("/xxx")
public class xxxController {}

spingmvc用註解@Controller的方式宣告控制器,用@RequestMapping(“/xxx”)註解宣告改控制器攔截的url型別。

不同的請求會有不同的作用,不同的請求需要傳遞不同的引數,SpringMVC提供了4種獲取引數的方式。

1、@RequestParam

用@RequestParam(“partyId”)的方式繫結引數值。

@RequestMapping(method = RequestMethod.GET)
public String setupForm(@RequestParam("partyId") int partyId, Model model) {
2、@PathVariable

當使用@RequestMapping URI template 樣式對映時, 即 Url/{partyId}, 這時的paramId可通過 @Pathvariable註解繫結它傳過來的值到方法的引數上。

@RequestMapping(method = RequestMethod.GET)
public String setupForm(@PathVariable(value = "partyId") int partyId, Model model) {
3、 @RequestHeader

通過@RequestHeader註解把xxxId繫結到partyId上。

@RequestMapping(method = RequestMethod.GET)
public String setupForm(@RequestHeader("xxxId") int partyId, Model model) {
4、@ModelAttribute

該註解有兩個用法,一個是用於方法上,一個是用於引數上;
用於方法上時: 通常用來在處理@RequestMapping之前,為請求繫結需要從後臺查詢的model;

@ModelAttribute
public Account create(@RequestParam String number) {

用於引數上時: 用來通過名稱對應,把相應名稱的值繫結到註解的引數bean上;要繫結的值來源於:

1) @SessionAttributes 啟用的attribute 物件上;

2) @ModelAttribute 用於方法上時指定的model物件;

3) 上述兩種情況都沒有時,new一個需要繫結的bean物件,然後把request中按名稱對應的方式把值繫結到bean中。

 @RequestMapping(value = "/update", method = RequestMethod.POST)
 public Map<String, Object> updateParty(@Valid @ModelAttribute("Meeting") Meeting meeting,
                                      BindingResult result) {