购买
下载掌阅APP,畅读海量书库
立即打开
畅读海量书库
扫码下载掌阅APP

4.4 自定义@ResponseBody渲染

在当前前后端分离的趋势下,使用JSON已经是十分普遍了。对于前端的页面或者移动端应用,可以通过请求后端获取JSON数据集,这样它们就能很方便地将数据渲染到视图中。有时前端也需要提交较为复杂的数据到后端,为了更好组织和提高代码的可读性,可以将数据转换为JSON数据集,通过HTTP请求提交给后端,对此SpringMVC也提供了良好的支持。

回想SpringMVC把某个控制器的返回转变为JSON数据集时,只需要在方法上标注@ResponseBody注解即可,当遇到标注的@ResponseBody后,处理器就会记录这个方法的响应类型为JSON数据集。当执行完控制器返回后,处理器会启用结果解析器(ResultResolver)去解析这个结果,它会去轮询注册给SpringMVC的HttpMessageConverter接口的实现类。

由于MappingJackson2HttpMessageConverter这个实现类已经被SpringMVC所注册,加上SpringMVC将控制器的结果类型标明为JSON,于是通过它就在处理器内部把结果转换为了JSON,所以就匹配代码如下所示。

Controller控制层

spring.xml配置文件加入请求和响应读取数据的编码字符集相关的jar包和将数据转换为json数据的jar包,代码如下所示。

页面获取json数据,使用jquery相关的语法click与$.post请求来获取后台返回的json数据信息,代码如下所示。

4.4.1 @RestController的作用

如上所示,使用SpringMVC的方式对于Json数据的返回,但是使用SpringBoot工程不可能像SpringMVC一样通过定义@ResponseBody注解来渲染,这样就违背了SpringBoot工程的让其开发者只注重逻辑代码的编写,而不是需要花费大量的时间来编写项目中的配置文件的理念了,那么这时就可以使用SpringBoot工程中的@RestController注解了。

SpringBoot仍然秉承MVC的架构,在注解命名方面遵循此类讲究,对于负责RestfulAPI交互的功能模块,SpingBoot采用@RestController修饰类。

1.@RestController原理与实现案例

@RestController底层就是@Controller+@ResponseBody注解组成的。

@Controller将当前修饰的类注入SpringBootIOC容器,使得从该类所在的项目跑起来的过程中,这个类就被实例化。当然也有语义化的作用,即代表该类是充当Controller的作用。

@ResponseBody它的作用就是指该类中所有的API接口返回的数据,甭管你对应的方法返回Map或是其他Object,它会以Json字符串的形式返回给客户端,但是如果返回的是String类型,则仍然是String。

执行http://127.0.0.1:8080/test/testString请求返回结果如图4.1所示。

图4.1 KNNmrWkA6tpxn/bia8vAvZ4jPtujuzql+mN7MjQ8HX9lOdSB+EdzABMRt6TU+SsF

点击中间区域
呼出菜单
上一章
目录
下一章
×