@Responsebady和@RequestBody的区别

发布时间:2024-08-31 15:01

RequestMapping是一个用来处理请求地址映射的注解,可用于类或方法上。用于类上,表示类中的所有响应请求的方法都是以该地址作为父路径。

@RequestMapping(value = \"/aaa\")//类级别,可以没有

public class myController {

    @RequestMapping(value = \"/bbb\")//方法级别,必须有

  public String getMyName() {

        return \"myReturn\";

    }

}

用在方法上时,表示这个这个处理对应请求的方法,由MVC负责映射进来。

可以这样理解,当你想吧整个方法中的相同的前缀请求抽离出来,就可以把相同的路径名字放到类上面。



@Responsebody与@RequestBody

@Responsebody表示该方法的返回结果直接写入HTTP response body中

一般在异步获取数据时使用,在使用@RequestMapping后,返回值通常解析为跳转路径,

加上@Responsebody后返回结果不会被解析为跳转路径,而是直接写入HTTP response body中。

比如异步获取json数据,加上@Responsebody后,会直接返回json数据。

@RequestBody一般用于在提交ajax时所带的请求参数插入到方法中。 简单的说就是帮你把提交的数据直接放到你定义的变量中。

例如:

function login() {//页面异步请求

    var mydata = \'{\"name\":\"\' + $(\'#name\').val() + \'\",\"id\":\"\'

            + $(\'#id\').val() + \'\",\"status\":\"\' + $(\'#status\').val() + \'\"}\';

    $.ajax({

        type : \'POST\',

        contentType : \'application/json\',

        url : \"${pageContext.request.contextPath}/person/login\",

        processData : false,

        dataType : \'json\',

        data : mydata,

        success : function(data) {

            alert(\"id: \" + data.id + \"\\nname: \" + data.name + \"\\nstatus: \"

                    + data.status);

        },

        error : function() {

            alert(\'出错了!\');

        }

    });

};

    @RequestMapping(value = \"person/login\")

    @ResponseBody

    public Person login(@RequestBody Person person) {//将请求中的mydata写入Person对象中

        return person;//不会被解析为跳转路径,而是直接写入HTTP response body中因为我们加了                                  //@ResponseBody这个注解。

    }



扩展:@PathVariable获取请求路径变量

function profile() {

    var url = \"${pageContext.request.contextPath}/person/profile/\";

    var query = $(\'#id\').val() + \'/\' + $(\'#name\').val() + \'/\'

            + $(\'#status\').val();

    url += query;

    $.get(url, function(data) {

        alert(\"id: \" + data.id + \"\\nname: \" + data.name + \"\\nstatus: \"

                + data.status);

    });

}

    @RequestMapping(value = \"person/profile/{id}/{name}/{status}\")

    @ResponseBody

    public Person porfile(@PathVariable int id,@PathVariable String name,@PathVariable boolean status) {

        return new Person(id, name, status);

    }

  //@RequestMapping(value = \"/person/profile/{id}/{name}/{status}\")中的{id}/{name}/{status}与@PathVariable int id, @PathVariable String name,@PathVariable boolean status一一对应,按名匹配。

ItVuer - 免责声明 - 关于我们 - 联系我们

本网站信息来源于互联网,如有侵权请联系:561261067@qq.com

桂ICP备16001015号