Spring MVC 基於Method的映射規則(註解版)

在Restful風格的web開發中,根據不一樣的請求方法使用相應的控制器處理邏輯成爲核心需求,下面就看看如何在Spring MVC中識別不一樣的請求方法。web

請求方法

在Http中,請求的方法有不少種,最多見的就是GET、POST,他們的差別就不過多贅述了。因爲Restful概念的興起,即便用Url的不一樣請求方法來控制業務方法,不少請求方法都開始流行起來,好比PUT、DELETE等等。spring

那麼就先介紹下各個請求方法的使用場景吧!安全

GET

平時網頁的一些基本的URL都是GET請求的,用於執行查詢操做。
可是因爲GET中URL是有長度的限制的,而GET會把全部的參數都放在URL中,好比服務器

xxx?name=xingoo

所以就會有下面的問題:app

  • 1 數據都明文暴露,用戶能夠直接看到
  • 2 數據長度有限制

POST

因爲上面GET的缺點,POST正好彌補了這些問題。POST方法把數據都存放在body裏面,這樣即突破了長度的限制;又保證用戶沒法直接看到。在使用表單時,比較經常使用post

HEAD請求只會返回首部的信息,不會返回相應體。一般用於測試數據是否存在、當作心跳檢測等等。測試

PUT

與GET相反,用於改變某些內容。code

DELETE

刪除某些資源資源

TRACE

能夠理解成,咱們爲了看看一條請求在到達服務前數據發生了什麼變化。可使用這個命令,它會在最後一站返回原始信息,這樣就能夠觀察到中間是否修改過請求。(常常會用於跨站攻擊,因此有必定的安全隱患)開發

OPTIONS

詢問服務器支持的方法。

PATCH

這個方法不太常見,是servlet 3.0提供的方法,主要用於更新部分字段。與PUT方法相比,PUT提交的至關於所有數據的更新,相似於update;而PATCH則至關於更新部分字段,若是數據不存在則新建,有點相似於neworupdate。

Spring中的使用方法

在Spring MVC中,RequestMethod提供了方法的集合:

public enum RequestMethod {
    GET, HEAD, POST, PUT, PATCH, DELETE, OPTIONS, TRACE
}

在控制器中,咱們能夠經過設置RequestMapping的method方法,改變接收數據controller:

@Controller
public class HelloController {
    @RequestMapping(value="/test",method=RequestMethod.GET)
    public @ResponseBody String get(){
        return "from get";
    }
    @RequestMapping(value="/test",method=RequestMethod.POST)
    public @ResponseBody String post(){
        return "from post";
    }
}

雖然上面的Url是同樣的,可是因爲請求方法不一樣,他們會根據請求方法使用相應的控制器方法處理請求。

相關文章
相關標籤/搜索