@Responsebody与@RequestBody、@RequestMapping、@PathVariable

  1. 预备知识:@RequestMapping  
  2. RequestMapping是一个用来处理请求地址映射的注解,可用于类或方法上。用于类上,表示类中的所有响应请求的方法都是以该地址作为父路径。  
  3. @RequestMapping(value = "/aaa")//类级别,可以没有  
  4. public class myController {  
  5.     @RequestMapping(value = "/bbb")//方法级别,必须有  
  6.     public String getMyName() {  
  7.         return "myReturn";  
  8.     }  
  9. }  
  10. 对应的action就是:<form action="aaa/bbb">  
  11. 返回页面就是myReturn.jsp  
  12.   
  13. @Responsebody@RequestBody  
  14. @Responsebody表示该方法的返回结果直接写入HTTP response body中  
  15. 一般在异步获取数据时使用,在使用@RequestMapping后,返回值通常解析为跳转路径,  
  16. 加上@Responsebody后返回结果不会被解析为跳转路径,而是直接写入HTTP response body中。  
  17. 比如异步获取json数据,加上@Responsebody后,会直接返回json数据。  
  18. @RequestBody将HTTP请求正文插入方法中,使用适合的HttpMessageConverter将请求体写入某个对象。  
  19. function login() {//页面异步请求  
  20.     var mydata = '{"name":"' + $('#name').val() + '","id":"'  
  21.             + $('#id').val() + '","status":"' + $('#status').val() + '"}';  
  22.     $.ajax({  
  23.         type : 'POST',  
  24.         contentType : 'application/json',  
  25.         url : "${pageContext.request.contextPath}/person/login",  
  26.         processData : false,  
  27.         dataType : 'json',  
  28.         data : mydata,  
  29.         success : function(data) {  
  30.             alert("id: " + data.id + "\nname: " + data.name + "\nstatus: "  
  31.                     + data.status);  
  32.         },  
  33.         error : function() {  
  34.             alert('出错了!');  
  35.         }  
  36.     });  
  37. };  
  38.     @RequestMapping(value = "person/login")  
  39.     @ResponseBody  
  40.     public Person login(@RequestBody Person person) {//将请求中的mydata写入Person对象中  
  41.         return person;//不会被解析为跳转路径,而是直接写入HTTP response body中  
  42.     }  
  43.   
  44. 扩展:@PathVariable获取请求路径变量  
  45. function profile() {  
  46.     var url = "${pageContext.request.contextPath}/person/profile/";  
  47.     var query = $('#id').val() + '/' + $('#name').val() + '/'  
  48.             + $('#status').val();  
  49.     url += query;  
  50.     $.get(url, function(data) {  
  51.         alert("id: " + data.id + "\nname: " + data.name + "\nstatus: "  
  52.                 + data.status);  
  53.     });  
  54. }  
  55.     @RequestMapping(value = "person/profile/{id}/{name}/{status}")  
  56.     @ResponseBody  
  57.     public Person porfile(@PathVariable int id,@PathVariable String name,@PathVariable boolean status) {  
  58.         return new Person(id, name, status);  
  59.     }  
  60.   //@RequestMapping(value = "/person/profile/{id}/{name}/{status}")中的{id}/{name}/{status}与@PathVariable int id, @PathVariable String name,@PathVariable boolean status一一对应,按名匹配。  
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值