好程序员Java分享SpringMVC之@ResponseBody注解
好程序员Java分享SpringMVC之@ResponseBody注解,本章我们学习到SpringMVC的服务器端如何提供数据查询服务,这里需要使用两个重要的注解:@ResponseBody和@RestController。
@ResponseBody注解
在前面使用SpringMVC时,Controller中的方法返回值会通过视图处理器ViewResolver处理为页面的URL,然后跳转到对应页面中,如下面例子返回的hello,将转换为/WEB-INF/pages/hello.jsp
@Controller public class UserController{ @RequestMapping(“/login”) public String login(){ return “hello”; } }
有时候我们需要用Controller实现网络服务接口,比如:商品查询、查询天气、新闻数据等。就不需要进行页面跳转而是直接返回数据。
这时候我们可以在方法上,添加注解:@ResponseBody
@Controller public class UserController{ @ResponseBody @RequestMapping(“/login”) public String login(){ return “hello”; } }
在浏览器中直接显示hello文字,也就是说添加了@ResponseBody注解的方法,返回值会通过HTTP响应主体直接发送给浏览器。
类型转换器
默认情况下,使用@ResponseBody返回的数据只能是String类型,其它类型返回时会出现异常:
这里提示没有对应的转换器,这里可以添加转换器将数据转换为特定的格式,如:xml或json等,JSON是数据通信的主要格式,我们将添加一个JSON格式的转换器。配置方法非常简单,我们只需要添加jackson-databind依赖:
<dependency> <groupId>com.fasterxml.jackson.core</groupId> <artifactId>jackson-databind</artifactId> <version>2.8.7</version> </dependency>
Jackson库可以实现Java对象和JSON的相互转换,引入Jackson-databind依赖后,SpringMVC会自动添加Jackson的转换器。
转换自定义类型
接下来我们再进行测试,添加方法测试返回boolean数据
@ResponseBody @RequestMapping("/login2") public boolean login2(){ return false; }
我们进行数据查询时,需要返回自定义类型的数据,如:用户、商品、订单、文章等,这里我们测试返回自定义类型:
public class User { private int id; private String username; private String birthday; private String sex; private String address; //添加get\set\构造方法
} @ResponseBody @RequestMapping("/login3") public User login3(){ User user = new User(1, "张三", "1990-2-1", "男", "武汉"); return user; }
可以看到User对象被转换成了JSON格式。再测试对象集合:
@ResponseBody @RequestMapping("/login4") public List<User> login4(){ List<User> users = new ArrayList<>(); users.add(new User(1, "张三", "1990-2-1", "男", "武汉")); users.add(new User(2, "李四", "1990-2-1", "男", "武汉")); users.add(new User(3, "王五", "1990-2-1", "男", "武汉")); return users; }
List集合被转换成了JSON数组,我们从数据库查询到数据后都会放入对应的实体类集合中,然后把集合转换成JSON格式发送给客户端,有了@ResponseBody和Jackson转换器可以很容易的实现。
@RestController注解
如果一个Controller类主要用于做网络服务,所有的方法都需要添加@ResponseBody注解,我们可以在类的前面加上@RestController注解,这个注解相当于@Controller+@ResponseBody,也就是说它既可以用于声明类为Controller,也可以给所有方法自动添加@ResponseBody注解。
总结
本章我们学习了SpringMVC中的@ResponseBody注解,有该注解的方法,可以将数据直接返回给客户端,我们还学习了利用Jackson库提供的转换器,将自定义类型转换为JSON格式,实际项目中有很多地方需要它们来提供查询数据的服务。
低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
【教程】前端 Vue+Node+MongoDB高级全栈开发
课程名称:前端 Vue+Node+MongoDB高级全栈开发讲师:Scott难度:高级时长:24小时开发准备材料:阿里云服务器ECS、阿里云MongoDB【适合人群】本课程是Vue.js+Node.js高级实战课程,对您的学习能力及基础都有很高要求: 精通HTML、 CSS和javascript编程, 有一定Vue.js 基础和Node.js、MongoDB实际开发经验 已经具备npm和Webpack的使用经验以上3点务必掌握,否则强烈建议您先从《Vue2.0+Node.js+MongoDB全栈打造商城系统》这门难度等级稍低的课程开始学习 下载地址:链接:https://pan.baidu.com/s/1TXSnVddLg6fOK9NlL2dWlw 提取码:qz6v
- 下一篇
Aliyun Serverless VSCode Extension v1.6.0 发布
Aliyun Serverless VSCode Extension 是阿里云 Serverless 产品 函数计算 Function Compute 的 VSCode 插件,该插件结合了函数计算 Fun 工具以及函数计算 SDK ,是一款 VSCode 图形化开发调试函数计算以及操作函数计算资源的工具。 通过该插件,用户可以: 快速地在本地初始化项目、创建函数 运行、调试本地函数(调试功能目前支持 nodejs、python、php) 拉取云端的服务函数列表,查看服务函数配置信息,执行云端函数 导入云端的服务函数到本地工作目录 部署服务函数至云端,并更新相关配置 v1.6.0 版本 北京时间 2019 年 08 月 22 日 Aliyun Serverless VSCode Extension 发布了 v1.6.0 版本,该版本 支持 nodej
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
-
Docker使用Oracle官方镜像安装(12C,18C,19C)
- Springboot2将连接池hikari替换为druid,体验最强大的数据库连接池
- CentOS8编译安装MySQL8.0.19
- Docker快速安装Oracle11G,搭建oracle11g学习环境
- SpringBoot2配置默认Tomcat设置,开启更多高级功能
- MySQL8.0.19开启GTID主从同步CentOS8
- CentOS7,8上快速安装Gitea,搭建Git服务器
- Jdk安装(Linux,MacOS,Windows),包含三大操作系统的最全安装
- SpringBoot2编写第一个Controller,响应你的http请求并返回结果
推荐阅读
最新文章
- CentOS8安装MyCat,轻松搞定数据库的读写分离、垂直分库、水平分库
- SpringBoot2编写第一个Controller,响应你的http请求并返回结果
- CentOS7,CentOS8安装Elasticsearch6.8.6
- SpringBoot2初体验,简单认识spring boot2并且搭建基础工程
- CentOS6,CentOS7官方镜像安装Oracle11G
- Docker使用Oracle官方镜像安装(12C,18C,19C)
- SpringBoot2配置默认Tomcat设置,开启更多高级功能
- 设置Eclipse缩进为4个空格,增强代码规范
- Mario游戏-低调大师作品
- MySQL8.0.19开启GTID主从同步CentOS8