1. @RequestMappinghtml
RequestMapping是一個用來處理請求地址映射的註解,可用於類或方法上。用於類上,表示類中的全部響應請求的方法都是以該地址做爲父路徑。java
RequestMapping註解有六個屬性,下面咱們把她分紅三類進行說明(下面有相應示例)。json
一、 value, method;app
value: 指定請求的實際地址,指定的地址能夠是URI Template 模式(後面將會說明);spa
method: 指定請求的method類型, GET、POST、PUT、DELETE等;debug
二、consumes,produceshtm
consumes: 指定處理請求的提交內容類型(Content-Type),例如application/json, text/html;對象
produces: 指定返回的內容類型,僅當request請求頭中的(Accept)類型中包含該指定類型才返回;blog
三、params,headersio
params: 指定request中必須包含某些參數值是,才讓該方法處理。
headers: 指定request中必須包含某些指定的header值,才能讓該方法處理請求。
2. @PathVariable
取出@RequestMapping中uri中的變量做爲參數。
@Controller @RequestMapping ( "/test/{variable1}" ) public class MyController { @RequestMapping ( "/showView/{variable2}" ) public ModelAndView showView( @PathVariable String variable1, @PathVariable ( "variable2" ) int variable2) { ModelAndView modelAndView = new ModelAndView(); modelAndView.setViewName( "viewName" ); modelAndView.addObject( " 須要放到 model 中的屬性名稱 " , " 對應的屬性值,它是一個對象 " ); return modelAndView; } }
上面的例子中,使用@PathVariable有指定名字和沒指定兩種方式,那麼這兩種方式有什麼區別嗎:第一種狀況就默認去URI 模板中找跟參數名相同的變量,可是這種狀況只有在使用debug 模式進行編譯的時候才能夠,而第二種狀況是明確規定使用的就是URI 模板中的variable2 變量。當不是使用debug 模式進行編譯,或者是所須要使用的變量名跟參數名不相同的時候,就要使用第二種方式明確指出使用的是URI 模板中的哪一個變量。
一、params屬性
@RequestMapping (value= "testParams" , params={ "param1=value1" , "param2" , "!param3" }) public String testParams() { System. out .println( "test Params..........." ); return "testParams" ; }
用@RequestMapping 的params 屬性指定了三個參數,這些參數都是針對請求參數而言的,它們分別表示參數param1 的值必須等於value1 ,參數param2 必須存在,值無所謂,參數param3 必須不存在,只有當請求/testParams.do 而且知足指定的三個參數條件的時候才能訪問到該方法。因此當請求/testParams.do?param1=value1¶m2=value2 的時候可以正確訪問到該testParams 方法,當請求/testParams.do?param1=value1¶m2=value2¶m3=value3 的時候就不可以正常的訪問到該方法,由於在@RequestMapping 的params 參數裏面指定了參數param3 是不能存在的。
二、method屬性
@RequestMapping (value= "testMethod" , method={RequestMethod. GET , RequestMethod. DELETE }) public String testMethod() { return "method" ; }
在上面的代碼中就使用method 參數限制了以GET 或DELETE 方法請求/testMethod 的時候才能訪問到該Controller 的testMethod 方法。
三、headers屬性
@RequestMapping (value= "testHeaders" , headers={ "host=localhost" , "Accept" }) public String testHeaders() { return "headers" ; }
headers 屬性的用法和功能與params 屬性類似。在上面的代碼中當請求/testHeaders.do 的時候只有當請求頭包含Accept 信息,且請求的host 爲localhost 的時候才能正確的訪問到testHeaders 方法。