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