扫二维码与项目经理沟通
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流
好程序员Java分享SpringMVC之@ResponseBody注解,本章我们学习到SpringMVC的服务器端如何提供数据查询服务,这里需要使用两个重要的注解:@ResponseBody和@RestController。
创新互联建站长期为近1000家客户提供的网站建设服务,团队从业经验10年,关注不同地域、不同群体,并针对不同对象提供差异化的产品和服务;打造开放共赢平台,与合作伙伴共同营造健康的互联网生态环境。为玉泉企业提供专业的成都网站建设、成都网站设计,玉泉网站改版等技术服务。拥有十余年丰富建站经验和众多成功案例,为您定制开发。在前面使用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依赖:
com.fasterxml.jackson.core jackson-databind 2.8.7
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 Listlogin4(){ List 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格式,实际项目中有很多地方需要它们来提供查询数据的服务。
创新互联www.cdcxhl.cn,专业提供香港、美国云服务器,动态BGP最优骨干路由自动选择,持续稳定高效的网络助力业务部署。公司持有工信部办法的idc、isp许可证, 机房独有T级流量清洗系统配攻击溯源,准确进行流量调度,确保服务器高可用性。佳节活动现已开启,新人活动云服务器买多久送多久。
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流