码迷,mamicode.com
首页 > 编程语言 > 详细

springMVC的@ResponseBody、@RequestBody使用需要注意的地方

时间:2015-08-01 18:53:07      阅读:167      评论:0      收藏:0      [点我收藏+]

标签:

springMVC我觉得比struts2好的其中一个原因就是可以使用注解解析json数据,方便快捷。但是,即使如此,还是有需要注意的地方。

1、返回的地方设置@ResponseBody,请求的对象参数@RequestBody,单个参数不用加@RequestBody;

  @RequestMapping(value="/validation")
    public @ResponseBody String validation(String username) throws Exception{
      return username; }

2、如果要返回的是一个对象,那么直接返回,spring会自动转为json数据。

 @RequestMapping(value="/validation")
    public @ResponseBody User validation(String username) throws Exception{
     User u = new User(username); return u; }

3、如果传过来的是一组数据,可以用对象封装起来,使用@RequestBody会帮我们将json转为对应的对象。

@RequestMapping(value="/validation")
public String validation(@RequestBody User user)throws Exception{         
    return "index"; }

 

注意:

1、单个参数的情况

a)、返回单个变量的话springMVC不会帮我们转换,只会原值返回。

b)、单个参数不要用@RequestBody,可以用@RequestParam。

错误的情况:GET:出现400参数不合法或POST:出现username=a,key和value一起传到参数中

  @RequestMapping(value="/validation")
    public String validation(@RequestParam("name") String username) throws Exception{     
      return "index"; }

 c)、单个参数不要加‘contentType‘ : ‘application/json‘。contentType: ‘application/json‘, 这句去掉,这句是描述请求包内容格式的,你应该采用默认的application/x-www-form-urlencoded才能正确被服务器解析。

错误的情况:使用@RequestParam出现400错误;使用@RequestBody出现key和value一起传到参数中

 

 2、如果是@RequestBody整个对象的话,那么就要加‘contentType‘ : ‘application/json‘。不加的话,可能会出现406Not Acceptable

  $(‘#username‘).blur(function(){
        var postdata = ‘{"username":"‘ + $(‘#username‘).val() + ‘","password":"‘ + $(‘#password‘).val() + ‘"}‘;
                $.ajax({
                    url:"validation",
                    type:"post",
                    cache:false,
            contentType: ‘application/json‘, data:postdata, dataType:‘json‘, success:function(result){ } }); });

 具体情况就如上面所说,至于导致这些情况的具体原因,有空可以断点研究spring的源码。

springMVC的@ResponseBody、@RequestBody使用需要注意的地方

标签:

原文地址:http://www.cnblogs.com/ginponson/p/4694371.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!