SpringBoot 的MVC分层思想简述
- 前言
- 实例
- 1.view层到controller层
- 2.Controller到Model的数据流程
- 3. 举例说明
- 总结
前言
spring MVC,望文生义,主要分为Model层、View层、C层,这是一种大体的宏观的分层架构。
Model模型层,是指处理的业务逻辑模型,专注于数据的处理。
View层,指的是数据展示层,本质上展示的数据全部来自于Model层,通过Controller层获取后,直接或处理之后发送到View层进行数据展示。而View层的表现形式就可以千变万化,而不影响后台的代码逻辑。
Controller层,即控制层,负责对Http请求进行处理,接收到View层发送的HTTP请求后,调用业务逻辑层对Model进行操作,并将操作结果,返回给View层。
而在实际的开发中,可以更加细分为多种层次,灵活多变,不一而足,但是仍然可以有规律可循,大体上应该按照如下层次进行区分。
实例
先上工程代码结构图如下:
代码工程中,有Controller、Dao、dataobject、service这几个顶层包,而顶层包又可以分为viewobject、model等二级包,调用关系如下图所示:
1.view层到controller层
如上图所示,view层接收到浏览器的操作后,发送请求给Controller,控制器在得到数据后,将结果返回到View层,展示给用户。
2.Controller到Model的数据流程
Controller在接收到View的请求后,需要调用service层的类,service调用mybatis的mapper类,这些操作数据库的类,就是DAO层。mapper从数据库中得到了最原始的数据库数据,即与数据库表一一对应的dataobject,将这些dataobject类进行组合成为一个model,符合业务逻辑处理的模型,将这些model类,返回给Contoller。
有些情况下,Model层的数据并不需要全部返回给view,这时候就需要对model进行一层转换,转换为view想要的数据类型,即viewobject。
3. 举例说明
现在有两个数据库表,一个user表(id, name,age),一个password表(id,user_id,password)。
现在要求返回一个特定的用户信息展示在view界面上。
那么在dataobject下会有User和Password两个类,这两个类的属性与user和password表一模一样。
而实际的业务逻辑里,一个用户是包含密码的,所以,就需要建立一个UserModel类,具有(id,name,age,password)属性,这就需要对dataobject中的类进行处理才能得到。
得到Model类之后,就可以直接通过Controller返回给View进行展示了,但是,正常的系统中,密码这种敏感信息是不允许发送给前台的,所以Controller在发送给view之前,需要对Model类做进一步的处理成viewobject,即转换成UserView类,然后把UserView对象返回给View,进行数据展示。
总结
综上,宏观层面上有MVC三层,但是需要做细分。
Controller层需要分为ctroller层和viewobject层。
Model层可以分为 service、dao、model、dataobject四层。