@ResponseBody注解作用与原理

注解@ResponseBody,使用在控制层(controller)的方法上。

一、@ResponseBody作用:

将方法的返回值,以特定的格式写入到response的body区域,进而将数据返回给客户端。

当方法上面没有写@ResponseBody,底层会将方法的返回值封装为ModelAndView对象。

如果返回值是字符串,那么直接将字符串写到客户端;如果是一个Java对象,会将对象转化为json串,然后写到客户端。

@ResponseBody是作用在方法上的,@ResponseBody表示该方法的返回结果直接写入HTTP response body中,一般在异步获取数据时使用(AJAX)。

注意编码:
注解中我们可以手动修改编码格式,例如:

@ResponseMapping(value="/register.do",produces="text/html;charset=utf-8"),前面是请求的路径,后面是编码格式。

二、适用场景

有时候我们需要用Controller实现网络服务接口,比如:商品查询、查询天气、新闻数据等。就不需要进行页面跳转而是直接返回数据。

这时候我们可以在方法上,添加注解:@ResponseBody

在浏览器中直接显示hello文字,也就是说添加了@ResponseBody注解的方法,返回值会通过HTTP响应主体直接发送给浏览器。

@Controller
@RequestMapping("/test")
public class DemoController{
    @RequestMapping("/hello.do")
    @ResponseBody
    public String hello(){
       return "hello"; 
    }
}

类型转换器

默认情况下,使用@ResponseBody返回的数据只能是String类型,其它类型返回时会出现异常:

这里提示没有对应的转换器,这里可以添加转换器将数据转换为特定的格式,如:xml或json等,JSON是数据通信的主要格式,我们将添加一个JSON格式的转换器。配置方法非常简单,我们只需要添加jackson-databind依赖:

<dependency>
            <groupId>com.fasterxml.jackson.core</groupId>
            <artifactId>jackson-databind</artifactId>
            <version>2.13.4</version>
        </dependency>
Jackson库可以实现Java对象和JSON的相互转换,引入Jackson-databind依赖后,SpringMVC会自动添加Jackson的转换器。

 三、遇到的问题

通过地址栏注册用户的时候,明明地址输的没问题,可是却找不到,查看一下数据库,也可以插进记录。

 下面是从数据库里查到的记录:

 最后发现忘加@ResponsBody,加上之后,就可以正常运行了

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值