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;

}

猜你喜欢

转载自blog.csdn.net/qq_15022971/article/details/79858635