新手关于spring中@RequestMapping、@RequestBody、@PathVariable、@ResponseBody的理解

在使用SSM框的时候,经常见到使用注解,作为新手有时候不确定什么时候该用哪个注解,该注解又有什么作用,更别谈看懂源码了。所以自己总结一下,大概知道怎么用,加深一下记忆……..

@RequestMapping

1)定义:用来映射请求路径的处理器
2)用法:

  1. 用在类上,表示这个类下面的所有方法,都需要加上这个父路径来访问。加在类上是可以加,也可以不加,看实际需求
  2. 用在方法上,映射对应的处理方法。加在方法上必须要加
@Controller
@RequestMapping("/test")
public class Test{
    @RequestMapping("/doTest")
    public String doTest(){
        return "doTest";
    }
}

这个方法访问路径: /test/dotest

@RequestBody

1)定义:这个注解主要用来映射请求提交的参数,把请求中body里的参数通过合适HttpMessageConverter转换java对象里,再把对象绑定到参数上,所以这个注解是用在方法的参数上的.
2)用法:

@Controller
@RequestMapping("/monitor")
public class Monitor{
    @RequestMapping("/doMonit")
    public String doMonit(@RequestBody Monitor monitor){
        return "monitor";
    }
}

备注:

1) GET、POST方式提时, 根据request header Content-Type的值来判断:
1.1)application/x-www-form-urlencoded, 可选(即非必须,因为这种情况的数据@RequestParam, @ModelAttribute也可以处理,当然@RequestBody也能处理);
1.2)multipart/form-data, 不能处理(即使用@RequestBody不能处理这种格式的数据);
1.3)其他格式, 必须(其他格式包括application/json, application/xml等。这些格式的数据,必须使用@RequestBody来处理);

@ResponseBody

1)定义:将响应的数据直接写到response中body里,跳过视图解析器,直接写到响应流里。
2)用的时机:
在返回值是对象或者是数据时(POJO、JSON、XML),可以用。只要返回的不是html标签或者不是jsp页面就用这个。
3)用法:

@Controller
@RequestMapping("/mamb")
public class monitor{
    @RequestMapping("/domonitor")
    @ResponseBody
    public Monitor getMonitor(){
        Monitor mon = new Monitor();
        mon.setName("张三");
        mon.setAge("25");
        return mon;
    }
}

@PathVariable

1)定义:绑定动态url中的参数,赋值到方法的参数上,名称要一致
2)用法:

假设请求路径:http://localhost:8080/monitor/mon/zhangsan/25
    @Controller
    public class monitor{
        @RequestMapping("/mon/{name}/{age}")
        @ResponseBody
        public Monitor getMonitor(@PathVariable String name,@PathVariable String age){
            Monitor mon = new Monitor();
            mon.setName(name);//namge=张三
            mon.setAge(age);//age=25
            return mon;
        }
    }   

更多详情参看:
http://blog.csdn.net/ff906317011/article/details/78552426
http://blog.csdn.net/walkerjong/article/details/7520896

@pathVariable和@requestMapping在有重复的情况下,会优先按照@requestMapping来绑定.

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值