@RequestParam用於將請求參數區數據映射到功能處理方法的參數上。html
接下來咱們看一下@RequestParam註解主要有哪些參數:java
value:參數名字,即入參的請求參數名字,如username表示請求的參數區中的名字爲username的參數的值將傳入;spring
required:是否必須,默認是true,表示請求中必定要有相應的參數,不然將報404錯誤碼;json
defaultValue:默認值,表示若是請求中沒有同名參數時的默認值,默認值能夠是SpEL表達式,如「#{systemProperties['java.vm.version']}」。跨域
@PathVariable用於將請求URL中的模板變量映射到功能處理方法的參數上。session
@RequestMapping(value="/users/{userId}/topics/{topicId}") public String test( @PathVariable(value="userId") int userId, @PathVariable(value="topicId") int topicId)
如請求的URL爲「控制器URL/users/123/topics/456」,則自動將URL中模板變量{userId}和{topicId}綁定到經過@PathVariable註解的同名參數上,即入參後userId=12三、topicId=456。代碼在PathVariableTypeController中。mvc
public String test2(@CookieValue(value="JSESSIONID", defaultValue="") Cookie sessionId)
@CookieValue用於將請求的Cookie數據映射到功能處理方法的參數上。app
@CookieValue也擁有和@RequestParam相同的三個參數,含義同樣。cors
@RequestHeader用於將請求的頭信息區數據映射到功能處理方法的參數上。ui
@ModelAttribute一個具備以下三個做用:
①綁定請求參數到命令對象:放在功能處理方法的入參上時,用於將多個請求參數綁定到一個命令對象,從而簡化綁定流程,並且自動暴露爲模型數據用於視圖頁面展現時使用;
public String test1(@ModelAttribute("user") UserModel user)
它的做用是將該綁定的命令對象以「user」爲名稱添加到模型對象中供視圖頁面展現使用。咱們此時能夠在視圖頁面使用${user.username}來獲取綁定的命令對象的屬性。
②暴露表單引用對象爲模型數據:放在處理器的通常方法(非功能處理方法)上時,是爲表單準備要展現的表單引用對象,如註冊時須要選擇的所在城市等,並且在執行功能處理方法(@RequestMapping註解的方法)以前,自動添加到模型對象中,用於視圖頁面展現時使用;
③暴露@RequestMapping方法返回值爲模型數據:放在功能處理方法的返回值上時,是暴露功能處理方法的返回值爲模型數據,用於視圖頁面展現時使用。
@SessionAttributes綁定命令對象到session 若是你須要訪問預先存在的、以全局方式管理的會話屬性的話,好比在控制器以外(好比經過過濾器)可能或不可能存在在一個方法參數上使用註解
@CrossOrigin 支持跨域請求註解
參考spring 官方文檔 https://spring.io/blog/2015/06/08/cors-support-in-spring-framework
@SessionAttribute同樣,註解@RequestAttribute能夠被用於訪問由過濾器或攔截器建立的、預先存在的請求屬性
RequestMapping註解有六個屬性,下面咱們把她分紅三類進行說明。
【一、 value, method;】
value:指定請求的實際地址,指定的地址能夠是URI Template 模式;
method: 指定請求的method類型, GET、POST、PUT、DELETE等;
【二、consumes,produces;】
consumes: 指定處理請求的提交內容類型(Content-Type),例如application/json, text/html;
produces: 指定返回的內容類型,僅當request請求頭中的(Accept)類型中包含該指定類型才返回;
【三、 params,headers;】
params: 指定request中必須包含某些參數值時,才讓該方法處理。
headers: 指定request中必須包含某些指定的header值,才能讓該方法處理請求。