Spring MVC使用篇(十七)—— Spring MVC常用注解

1、@Controller注解

  @Controller注解用于标记一个类,使用它标记的类就是一个Spring MVC Controller对象,即一个控制器类。Spring使用扫描机制查找应用程序中所有基于注解的控制器类。分发出力气会扫描使用了该注解的类的方法,并检测该方法是否使用了@RequestMapping注解,而使用@RequestMapping注解的方法才是真正处理请求的处理器。

2、@RequestMapping注解

  @RequestMapping注解可以用来注释一个控制器类,在这种情况下,所有方法都将映射为相对于类级别的请求,表示该控制器处理的所有请求都被映射到value属性所指示的路径下。

  使用@RequestMapping注解可指定下表所示的属性。

属性类型是否必要说明
valueString[]用于将指定请求的实际地址映射到方法上
nameString给映射地址指定一个别名
methodRequestMethod[]映射指定请求的方法类型,包括GET、POST、HEAD、OPTIONS、PUT、PATCH、DELETE、TRACE
consumesString[]指定处理请求的提交内容类型(Content-Type),例如application/json、text/html等
producesString[]指定返回的内容类型,返回的内容类型必须是request请求头(Accept)中所包含的类型
paramsString[]指定request中必须包含某些参数时,才让该方法处理
headersString[]指定request中必须包含某些指定的header值,才能让该方法处理请求
PathString[]在Servlet环境中只有:uri路径映射(例如“/myPath.do”)。也支持如ant的基于路径模式(例如“/myPath/*,”)。在方法层面上,支持相对路径(例如“edit. do”)

2.1 value属性

  value属性将URL映射到方法上,由于value属性是@RequestMapping注解的默认属性,因此,如果只有唯一的属性,则可以省略属性名。但如果有超过一个属性,就必须写上value属性名称。value属性的值也可以是一个空字符串。

2.2 method属性

  method属性用来指示该方法仅仅处理哪些HTTP请求方式。例如下面的代码段代表该方法只支持POST请求:

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

  也可以同时支持多个HTTP请求方式,如:

@RequestMapping(value="/hello",method={RequestMethod.POST,RequestMethod.GET})

2.3 consumes属性

  consumes属性指定处理请求的提交内容类型(Content-Type)。例如下面的代码段表示该方法处理request Content-Type为“application/json”类型的请求,且只支持POST请求。

@RequestMapping(value="/hello",method=RequestMethod.POST,consumes="application/json")

2.4 produces属性

  produces属性指定返回的内容类型,返回的内容类型必须是request请求头(Accept)中所包含的类型。

@RequestMapping(value="/hello",method=RequestMethod.POST,produces="application/json")

  表示方法仅处理request请求中Accept头中包含了"application/json"的请求,同时指明了返回的内容类型为"application/json"。

2.5 params属性

  params属性指定request中必须包含某些参数值时,才让该方法处理。例如下面的代码段表示方法仅处理其中名为“myParam”、值为“myValue”的请求。

@RequestMapping(value="/hello",method=RequestMethod.POST,params="myParam=myValue")

2.6 headers属性

  headers属性指定request中必须包含某些指定的header值,才能让该方法处理请求。例如下面的代码段表示方法仅处理request的header中包含了指定“Refer”请求头和对应值为“http://www.baidu.com”的请求

@RequestMapping(value="/hello",method=RequestMethod.POST,headers="Refer=http://www.baidu.com")

3、@RequestParam注解

  @RequestParam注解用于参数绑定

  @RequestParam注解用于将指定的请求参数赋值给方法中的形参,其属性如下表所示。

属性类型是否必要说明
nameString指定请求头绑定的名称
valueStringname属性的别名
requiredString指示参数是否必须绑定
defaultValueString如果没有传递参数而使用的默认值

  在对前端传递过来的参数与处理该请求的方法中的形参进行绑定时,如果参数名一致则可以实现自动绑定,如果不一致,则需要使用@RequestParam注解来告诉Spring MVC如何进行参数绑定。

4、@PathVariable注解

  @PathVariable注解常用于利用Spring MVC实现RESTful分割。详见Spring MVC使用篇(十六)—— 实现RESTful风格

5、@RequestHeader注解

  @RequestHeader注解用于参数绑定

  @RequestHeader注解用于将请求的头信息区数据映射到功能处理方法的形参上,其属性如下表所示。

属性类型是否必要说明
nameString指定请求头绑定的名称
valueStringname属性的别名
requiredString指示参数是否必须绑定
defaultValueString如果没有传递参数而使用的默认值

  @RequestHeader注解示例代码如下:

@RequestMapping(value="/requestHeaderTest")
public void requestHeaderTest(@RequestHeader("User-Agent") String userAgent,@RequestHeader(value="Accept") String[] accepts){
}

  以上配置自动将请求头"User-Agent"的值赋到userAgent变量上,并将"Accept"请求头的值赋到accepts参数上。

6、@CookieValue注解

  @CookieValue注解用于参数绑定

  @CookieValue注解用于将请求的Cookie数据映射到功能处理方法的形参上,其属性如下表所示。

属性类型是否必要说明
nameString指定请求头绑定的名称
valueStringname属性的别名
requiredString指示参数是否必须绑定
defaultValueString如果没有传递参数而使用的默认值

  使用@CookieValue注解示例代码如下:

@RequestMapping(value="/cookieValueTest")
public void cookieValueTest(@CookieValue(value="JESSIONID",defaultValue="")String sessionId){
}

  以上配置会自动将JESSIONID值设置到sessionId参数上,defaultValue表示Cookie中没有JESSIONID时默认为空。

7、@SessionAttributes注解

  @SessionAttributes注解用于参数绑定

  @SessionAttributes注解允许我们有选择地指定Model中的哪些属性需要转存到HttpSession对象中,其属性如下表所示。

属性类型是否必要说明
namesStringModel中属性的名称,即存储在HttpSession当中的属性名称
valueStringnames属性的别名
typesClass<?>[]指示参数是否必须绑定

8、@ModelAttribute注解

  @SessionAttributes注解用于参数绑定

  @ModelAttribute注解将请求参数绑定到Model对象,该注解只支持一个属性value,类型为String,表示绑定的属性名称。

  被@ModelAttribute注解注释的方法会在Controller每个方法执行前被执行,因此在一个Controller映射多个URL时,要谨慎使用。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值