SpringMVC的常用注解

SpringMVC的常用注解

1、@Controller

@Controller 用于标记在一个类上,使用它标记的类就是一个SpringMVC Controller 对象。

2、@RequestMapping

用于处理请求 url 映射的注解,可用于类或方法上。

 使用在类上: 请求 URL 的第一级访问目录。此处不写的话,就相当于应用的根目录
 使用在方法上: 请求 URL 的第二级访问目录 
属性:
1、name:相当于方法的注释,使方法更易理解
2、value:指定请求的实际地址
3、path:与value同义,两者都是用来作为映射使用的
4、method:指定请求的method类型, GET、POST、PUT、DELETE等
5、params:该属性指定,请求中必须包含params属性规定的参数时,才能执行该请求
6、headers:该属性指定,请求中必须包含某些指定的header值,才能够让该方法处理请求
7、consumes:指定处理请求的提交内容类型(Content-Type),例如:application/json、text/html时,才能够让该方法处理请求
8、produces:指定返回的内容类型,返回的内容类型必须是request请求头(Accept)中所包含的类型,此外,produces属性还可以指定返回值的编码

3、@Resource和@Autowired

@Resource和@Autowired都是做bean的注入时使用,其实@Resource并不是Spring的注解,它的包是javax.annotation.Resource,需要导入,但是Spring支持该注解的注入。

相同点:

两者都可以写在字段和setter方法上。两者如果都写在字段上,那么就不需要再写setter方法。

不同点:

@Autowired注解是按照类型(byType)装配依赖对象,默认情况下它要求依赖对象必须存在,如果允许null值,可以设置它的required属性为false。如果我们想使用按照名称(byName)来装配,可以结合@Qualifier注解一起使用。

@Resource默认按照ByName自动注入,由J2EE提供,需要导入包javax.annotation.Resource。
@Resource有两个重要的属性:name和type,而Spring将@Resource注解的name属性解析为bean的名字,而type属性则解析为bean的类型。所以,如果使用name属性,则使用byName的自动注入策略,而使用type属性时则使用byType自动注入策略。
如果既不制定name也不制定type属性,这时将通过反射机制使用byName自动注入策略。

4、@RequestParam

把请求中指定名称的参数给控制器中的形参赋值。

属性:
1、value:请求参数中的名称。
2、required:请求参数中是否必须提供此参数。 默认值:true。 表示必须提供,如果不提供将报错。 
3、defaultValue:默认值
使用场景:
1@RequestParam 只能用于接收 url 的传参?name=xxx
2、form表单的提交
例:
 @RequestMapping("/testRequestParam")
 public String testRequestParam(@RequestParam(value = "name",required = true,defaultValue = "李四") String username){
        System.out.println("username="+username);
        return "success";
    }

5、@RequestBody

  1. 用于获取请求体内容。 直接使用得到是 key=value&key=value…结构的字符串。
  2. 把获得json类型的数据转成pojo对象。
属性:

required:是否必须有请求体。默认值是:true。当取值为 true 时,get 请求方式会报错。如果取值为 false, get 请求得到是 null。

注:@RequestBody 不能使用get请求, 在Controller的方法参数里,有且只有一个

6、@ResponseBody

@ResponseBody用于将 Controller 的方法返回的对象,通过 HttpMessageConverter 接口转换为指定格式的数据如: json,xml 等,通过 Response 响应给客户端

使用时机:返回的数据不是html标签的页面,而是其他某种格式的数据时(如json、xml等)

用法:
  • 在Controller类: 代表该Controller类中所有的方法都使用@ResponseBody,即都直接返回对象数据
  • 在Controller类的方法上: 将该方法的返回值转成json对象返回给客户端

7、@ PathVariable

用于绑定 url 中的占位符。 例如:请求 url 中 /delete/{id}, 这个{id}就是 url 占位符。

url 支持占位符是 spring3.0 之后加入的。是 springmvc 支持 rest 风格 URL 的一个重要标志。

属性:
1、value:用于指定 url 中占位符名称。
2、required:是否必须提供占位符。 
使用场景:
获取路径中的参数
例:
 @RequestMapping("testPathVaribale/{id}")
 public String testPathVaribale(@PathVariable(value = "id") Integer id){
     System.out.println("id="+id);
       return "success";
}

8、@RequestHeader

用于获取请求消息头。

属性:
1、value:提供消息头名称
2、required:是否必须有此消息头 
使用场景:

从请求头中获取参数,鉴权(token) Authorization

9、@CookieValue

用于把指定 cookie 名称的值传入控制器方法参数。

属性:
1、value:指定 cookie 的名称。
2、required:是否必须有此 cookie。 
使用场景:
  /**
     * 获取 Session
     * JSESSIONID=412A032E02A2594698F6E3F4458B9CE6
     */
    @RequestMapping("/testCookieValue")
    public String testCookieValue(@CookieValue("JSESSIONID") String sessionId) {
        System.out.println("JSESSIONID = " + sessionId);
        return "success";
    }

10、@ModelAttribute

代表的是:该Controller的所有方法在调用前,先执行此@ModelAttribute方法,可用于注解和方法参数中,可以把这个@ModelAttribute特性,应用在BaseController当中,所有的Controller继承BaseController,即可实现在调用Controller时,先执行@ModelAttribute方法。

在 Controller 中使用 @ModelAttribute 时,有以下几种应用情况。
1、应用在方法上
2、应用在方法的参数上
3、应用在方法上,并且方法也使用了 @RequestMapping

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值