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


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

請求方法

在Http中,請求的方法有很多種,最常見的就是GET、POST,他們的差異就不過多贅述了。由於Restful概念的興起,即使用Url的不同請求方法來控制業務方法,很多請求方法都開始流行起來,比如PUT、DELETE等等。

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

GET

平時網頁的一些基本的URL都是GET請求的,用於執行查詢操作。
但是由於GET中URL是有長度的限制的,而GET會把所有的參數都放在URL中,比如

xxx?name=xingoo

因此就會有下面的問題:

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

POST

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

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

PUT

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

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是一樣的,但是由於請求方法不同,他們會根據請求方法使用相應的控制器方法處理請求。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM