@Responsebody注解

Posted 陈陈chenchen

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了@Responsebody注解相关的知识,希望对你有一定的参考价值。

@RequestBody

作用: 

      i) 该注解用于读取Request请求的body部分数据,使用系统默认配置的HttpMessageConverter进行解析,然后把相应的数据绑定到要返回的对象上;

      ii) 再把HttpMessageConverter返回的对象数据绑定到 controller中方法的参数上。

使用时机:

A) GET、POST方式提时, 根据request header Content-Type的值来判断:

  •     application/x-www-form-urlencoded, 可选(即非必须,因为这种情况的数据@RequestParam, @ModelAttribute也可以处理,当然@RequestBody也能处理);
  •     multipart/form-data, 不能处理(即使用@RequestBody不能处理这种格式的数据);
  •     其他格式, 必须(其他格式包括application/json, application/xml等。这些格式的数据,必须使用@RequestBody来处理);

 

B) PUT方式提交时, 根据request header Content-Type的值来判断:

 

  •     application/x-www-form-urlencoded, 必须;
  •     multipart/form-data, 不能处理;
  •     其他格式, 必须;

说明:request的body部分的数据编码格式由header部分的Content-Type指定;

 

 

@ResponseBody

 

作用: 

      该注解用于将Controller的方法返回的对象,通过适当的HttpMessageConverter转换为指定格式后,写入到Response对象的body数据区。

使用时机:

      返回的数据不是html标签的页面,而是其他某种格式的数据时(如json、xml等)使用;

 

controller层对应栗子:

@Controller
@RequestMapping("system/user")
public class UserCntroller {

    @Resource(name="UserService")
    private UserService userService;
    @RequestMapping(value = "login" , method = RequestMethod.POST)
    @ResponseBody
    public int login(HttpServletRequest request,String account,String password){
        boolean loginResult;
        account = account.trim();
        password = password.trim();
        int flag =userService.login(account,password);
        if(flag == 1){
            System.out.println("sss");
            return 1;
        }else{
            return 0;
        }
    }
}

 

js对应栗子:

$.ajax({
            type:"POST",
            url:"system/user/login.do",
            data:‘account=‘+account+‘&password=‘+password,
            dataType:"json",
            async:true,
            success:function(data){
                if(data==1){
                    location.href="index.html";
                }
                if(data==0){
                    alert("输入信息有误!!!");
                }
            },

 

以上是关于@Responsebody注解的主要内容,如果未能解决你的问题,请参考以下文章

@ResponseBody注解的作用

Spring MVC @ResponseBody注解返回值中文乱码问题

@ResponseBody注解

@RequestBody, @ResponseBody 注解理解

注解@ResponseBody的作用

@ResponseBody注解与JSON