java接口 数据_一步步学习java后台(三)(接口返回数据处理)

链接

本期目标

1.添加Spring注解支持, 通过注解使得接口可以成功返回一个字符串

添加AccountVo,并将AccountVo转换为JSON数据返回

Spring注解

没有注解的Spring框架是没有灵魂的!

上一章中,传统的SpringMVC的Controller只能完成通过实现函数 ModelAndView handleRequest()实现一种方法,此外,在spring-servlet.xml中,我们需要对每一个controller注册一个path。一个成熟的后台出现的路径可能以千记,难以想象通过这种手工方式如何实现。

注解就是为了解决这些问题而实现的。

@Controller

@Controller注解用于定义Controller

一个使用@Controller的java类如下:

8aeee2897f9f

HelloJSON

@Controller注解需要通过scan而被Spring框架发现,我们在spring-context.xml中添加如下配置:

@RequestMapping

@Controller + 扫描机制等同于声明的 class 属性,下面我们要配置后半部分的name,也就是 path属性。

8aeee2897f9f

image.png

@RequestMapping 就是用来做这种映射的,它可以将请求映射到类上,也可以映射到方法上。

@Controller

public class HelloWorldJSONController {

@RequestMapping(value = "/hellonihao")

public String helloNiHao() {

return "helloHao";

}

}

这时候运行下,让我们来访问下接口:

我们会发现,这个接口会尝试访问 helloHao.jsp,但是我们库里没有这个jsp文件,因此会爆404

8aeee2897f9f

image.png

这时候就需要第三个注解登场了:

@RequestBody

注解的作用是controller的方法返回的对象通过适当的转换器转换为指定的格式之后,写入到response对象的body区,通常用来返回JSON数据或者是XML数据。

使用此注解之后不会再走视图处理器,直接通过response对象输出指定格式的数据。

@Controller

public class HelloWorldJSONController {

@RequestMapping(value = "/hellonihao")

public

@ResponseBody

String helloNiHao() {

return "helloNiHao";

}

}

重新运行并访问,我们就可以看到运行结果:

8aeee2897f9f

image.png

现在已经成功返回字符串数据。

现在,我们已经成功完成了第一步返回字符串的目标。

JSON化

对于后台而言,其最主要的职责是处理逻辑,根据面向对象的原则,逻辑在代码中的实现是一个个Java Bean。当然,在实际项目里对应不同的目的被称为VO, PO, DTO..... 前端向后台发起请求,一般是希望获取到这些Bean (或者叫 VO view object)。而最通用的方法,就是讲Bean转化为JSON字符串进行下发。

当然,我们可以对每一个接口函数添加一次JSON解析,但是这样做就浪费了Spring框架强大的AOP能力。通过配置,我们完全可以直接使Bean自动JSON化。

对于一个商业后台系统来说,用户信息Account是肯定需要的。因此我们就通过Account例子来进行展示:

新建Bean

public class UserAccountVo {

private int userId;

private String sessionKey;

private String headImgUrl;

private String userName;

}

8aeee2897f9f

单击command + n,生成getter and sender

新建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();

}

}

现在我们可以先运行一下,看看

git地址:

tag:1.0.3

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值