1. 程式人生 > >SpringMVC註解詳解——(持續更新)

SpringMVC註解詳解——(持續更新)

@RequestMapping常見的可用引數如下:

           1.value: 制定請求的地址,可以是URLTemplate模式;(value可以省略不寫)

           2.method:指定請求的method型別,如GET,DELETE,UPDATE,PUT等;

           3.consumes: 指定處理請求的提交內容型別(Content-Type),例如application/json, text/html;

            4.produces :指定返回的內容型別,僅當request請求頭中的(Accept)型別中包含該指定型別才返回;

            5.params:指定request中必須包含某些引數值時,才讓該方法處理;

            6.headers:指定request中必須包含某些指定的header值,才能讓該方法處理請求;

 例如@RequestMapping(value="/test/",params={"username","age!=10"},headers={"

Accept-Language: zh-CN,q=0.9 "})

         判斷請求的引數也就是請求url?後面的鍵值對 必須包含username項切age!=10 請求頭必須是上面所述,

         username包含username

         !username不包含username

         age!=10  age不能等於10

          RequestMapping對映請求的時候支援Ant風格的資源地址匹配符:

            -?:匹配檔名中的一個字元

            -*  :匹配檔名中的任意字元

            -**:**匹配多層路徑

          如: -/user/*/createUser  匹配/user/aaa/createUser、/user/bbb/createUser

          如: -/user/**/createUser 匹配/user/createUser、/user/aaa/bbb/createUser

          如: -/user/createUser??: 匹配/user/createUseraa、/user/createUserbb

@PathVariable:

  @PathVariable從URL路徑中取值,如下:

        @RequestMapping("/Test/{id}")

   public void Test(@PathVariable("id") int num){}   

           注意:@PathVariable("Str")Str一定要和{str}佔位符的字串一樣,

           可以結合HiddenHttpMethodFilter實現RESTful風格的服務介面開發

<filter>
      <filter-name>HiddenHttpMethodFilter</filter-name>
      <filter-class>org.springframework.web.filter.HiddenHttpMethodFilter</filter-class>
   </filter>   

   <filter-mapping>
      <filter-name>HiddenHttpMethodFilter</filter-name>
      <url-pattern>/*</url-pattern>
   </filter-mapping>

@RequestParam

         屬性 value:用來對映請求的鍵

                 required:根據true 或者false制定這個引數是否在請求裡面一定要有,

                 defaultValue:當指定的引數在請求中不存在時,用來指定預設值。

      用在方法裡面的引數中,用來對映請求的URL?後面的引數,

         例如請求的Url是 http://localhost:8080/Learn/Test?id=222

	@RequestMapping("/Test")
	public void Test(@RequestParam(value="id", required=true,defaultValue="0") int num) {
		System.out.println("get value from requestParam "+num);
	}
	

@RequestHeader

                 value:用來對映請求的請求頭

                 required:根據true 或者false制定這個引數是否在請求頭裡面一定要有,

                 defaultValue:當指定的引數在請求頭中不存在時,用來指定預設值。


             對映request請求頭

	@RequestMapping("/TestHeader")
	public void testHeader(@RequestParam(value="Accept-Language") String str) {
		System.out.println("get value from requestHeader of Accept-Language "+str);
	}

@CookieValue

                  value:用來對映Cookie中的鍵

                 required:根據true 或者false制定這個引數是否在Cookie裡面一定要有,

                 defaultValue:當指定的Cookie在請求中不存在時,用來指定預設值。


@RequestMapping("/TestCookie")
	public void testCookie(@CookieValue(value="JSESSIONID",required=false,defaultValue="it is unexists") String cookieValue) {
		System.out.println("Here is Cookie Value "+cookieValue);
	}

@RequestBody

                     required :?????

常用來處理content-type不是預設的application/x-www-form-urlcoded編碼的內容,比如說:application/json或者是application/xml等。一般情況下來說常用其來處理application/json型別

通過@requestBody可以將請求體中的JSON字串繫結到相應的bean上,當然,也可以將其分別繫結到對應的字串上

          如:前端發給後端的時候 content_type:"application/json"(必須指定) 且data是json:

{
    "mp_id": "1350603-028-3300-6"
     "znwCommonDataCond": {
         "acquisition_time_min": "2017-03-21",
       "acquisition_time_max": "2017-04-21"
                          }

   }

json字串會自動對映到relationCond上;

後端接收:

@ResponseBody
@RequestMapping(value = "/getEigenValueList",method =RequestMethod.POST)

public String getEigenValueList(Model model,@RequestBody() RelationCond relationCond, HttpServletRequest request, HttpServletResponse response) 


RelationCond  這個javabean如下

class RelationCond  {

       private String mp_id;

       private  ZnwCommonDataCond  znwCommonDataCond;

}

  class ZnwCommonDataCond  {

private String acquisition_time_min;

private String acquisition_time_max;

}