【java_web】spring boot 中MVC的执行过程
慕课参考教程
https://www.imooc.com/video/912
https://www.imooc.com/learn/47
MVC的工作流程
- 控制器控制着每个请求下,使用什么模型生成怎样的视图。
- 以下讨论为使用Spring boot 的RESTful API的做法, 视图可以看做是前台的目标JSON串。
针对下面代的Controller代码
步骤一:请求域名/login后就会被服务器拦截,此时userService已经被spring注入,等待着请求进来。
步骤二:该请求的body内有JSON串,是前后台约定好的一个数据结构LoginRequsetInfo。该数据结构就是一个model,也就是一个Java实体类,可以被Spring序列和反序列成json。
步骤三:Controller内触发用户的目的JSON串构造,也就产生了LoginInfo这个model,所以控制器控制model。
步骤四:Controller是一个方法,其返回值可以自定义,可以直接返回一个LoginInfo给前台,但是前台想要获取更详细的信息,传统RESTful的API返回的JSON串是不带状态码的,这个时候可以自定义一个返回实体类StatusJson,写入与data同级的status和msg字段并返回。可见Controller可以控制前台显示也就控制View。
@RestController
public class LoginController {
@Autowired
private UserService userService;
@PostMapping(value = "/login")
@ApiOperation(value = "用户登录", response = LoginInfo.class)
private StatusJson userLogin(@RequestBody LoginRequestInfo loginRequestInfo) {
LoginInfo loginInfo = userService.userLogin(loginRequestInfo.getUserName(), loginRequestInfo.getUserPwd());
return new StatusJson(loginInfo);
}
}