admin管理员组文章数量:1794759
一步步学习java后台(三)(接口返回数据处理)
本期目标
1.添加Spring注解支持, 通过注解使得接口可以成功返回一个字符串
没有注解的Spring框架是没有灵魂的!
上一章中,传统的SpringMVC的Controller只能完成通过实现函数 ModelAndView handleRequest()实现一种方法,此外,在spring-servlet.xml中,我们需要对每一个controller注册一个path。一个成熟的后台出现的路径可能以千记,难以想象通过这种手工方式如何实现。 注解就是为了解决这些问题而实现的。
@Controller@Controller注解用于定义Controller 一个使用@Controller的java类如下:
@Controller注解需要通过scan而被Spring框架发现,我们在spring-context.xml中添加如下配置:
<context:component-scan base-package="com.zhoushijie.mock"> <context:exclude-filter type="annotation" expression="org.springframework.stereotype.Controller"/> </context:component-scan> @RequestMapping@Controller + 扫描机制等同于声明的 class 属性,下面我们要配置后半部分的name,也就是 path属性。想学习交流HashMap,nginx、dubbo、Spring MVC,分布式、高性能高可用、MySQL,redis、jvm、多线程、netty、kafka、的加尉xin(同英):1253431195 扩列获取资料学习,无工作经验不要加哦!
@RequestMapping 就是用来做这种映射的,它可以将请求映射到类上,也可以映射到方法上。
@Controller public class HelloWorldJSONController { @RequestMapping(value = "/hellonihao") public String helloNiHao() { return "helloHao"; } }这时候运行下,让我们来访问下接口:
localhost:8080/tutorial_war_exploded/hellonihao
我们会发现,这个接口会尝试访问 helloHao.jsp,但是我们库里没有这个jsp文件,因此会爆404
这时候就需要第三个注解登场了:
@RequestBody注解的作用是controller的方法返回的对象通过适当的转换器转换为指定的格式之后,写入到response对象的body区,通常用来返回JSON数据或者是XML数据。 使用此注解之后不会再走视图处理器,直接通过response对象输出指定格式的数据。
@Controller public class HelloWorldJSONController { @RequestMapping(value = "/hellonihao") public @ResponseBody String helloNiHao() { return "helloNiHao"; } }重新运行并访问,我们就可以看到运行结果:
现在已经成功返回字符串数据。
现在,我们已经成功完成了第一步返回字符串的目标。
JSON化对于后台而言,其最主要的职责是处理逻辑,根据面向对象的原则,逻辑在代码中的实现是一个个Java Bean。当然,在实际项目里对应不同的目的被称为VO, PO, DTO… 前端向后台发起请求,一般是希望获取到这些Bean (或者叫 VO view object)。而最通用的方法,就是讲Bean转化为JSON字符串进行下发。想学习交流HashMap,nginx、dubbo、Spring MVC,分布式、高性能高可用、MySQL,redis、jvm、多线程、netty、kafka、的加尉xin(同英):1253431195 扩列获取资料学习,无工作经验不要加哦!
当然,我们可以对每一个接口函数添加一次JSON解析,但是这样做就浪费了Spring框架强大的AOP能力。通过配置,我们完全可以直接使Bean自动JSON化。
对于一个商业后台系统来说,用户信Account是肯定需要的。因此我们就通过Account例子来进行展示:
新建Bean
public class UserAccountVo { private int userId; private String sessionKey; private String headImgUrl; private String userName; }新建Controller
@Controller @RequestMapping("/account/V1") public class AccountController { @RequestMapping(value = "/getUserInfo", method = RequestMethod.GET ) public @ResponseBody UserAccountVo getUserInfo() { UserAccountVo account = new UserAccountVo(); account.setUserId(1); account.setUserName("userName"); return new UserAccountVo(); } }版权声明:本文标题:一步步学习java后台(三)(接口返回数据处理) 内容由林淑君副主任自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.xiehuijuan.com/baike/1686779324a101772.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论