在Restful風格的web開發中,根據不一樣的請求方法使用相應的控制器處理邏輯成爲核心需求,下面就看看如何在Spring MVC中識別不一樣的請求方法。web
在Http中,請求的方法有不少種,最多見的就是GET、POST,他們的差別就不過多贅述了。因爲Restful概念的興起,即便用Url的不一樣請求方法來控制業務方法,不少請求方法都開始流行起來,好比PUT、DELETE等等。spring
那麼就先介紹下各個請求方法的使用場景吧!安全
平時網頁的一些基本的URL都是GET請求的,用於執行查詢操做。
可是因爲GET中URL是有長度的限制的,而GET會把全部的參數都放在URL中,好比服務器
xxx?name=xingoo
所以就會有下面的問題:app
因爲上面GET的缺點,POST正好彌補了這些問題。POST方法把數據都存放在body裏面,這樣即突破了長度的限制;又保證用戶沒法直接看到。在使用表單時,比較經常使用post
HEAD請求只會返回首部的信息,不會返回相應體。一般用於測試數據是否存在、當作心跳檢測等等。測試
與GET相反,用於改變某些內容。code
刪除某些資源資源
能夠理解成,咱們爲了看看一條請求在到達服務前數據發生了什麼變化。可使用這個命令,它會在最後一站返回原始信息,這樣就能夠觀察到中間是否修改過請求。(常常會用於跨站攻擊,因此有必定的安全隱患)開發
詢問服務器支持的方法。
這個方法不太常見,是servlet 3.0提供的方法,主要用於更新部分字段。與PUT方法相比,PUT提交的至關於所有數據的更新,相似於update;而PATCH則至關於更新部分字段,若是數據不存在則新建,有點相似於neworupdate。
在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是同樣的,可是因爲請求方法不一樣,他們會根據請求方法使用相應的控制器方法處理請求。