半亩方塘一鉴开,天光云影共徘徊。
朱熹·《观书有感》
一、MVC:模型-视图-控制器
M:model,模型,包含具体的业务逻辑和状态,执行数据库操作等任务。在JavaWeb中就是一个可重用的普通Java类 V:view,视图,用户能够看到的界面,比如网页或者软件的客户端。在JavaWeb中可以看做一个网站页面 C:controller,控制器,视图和模型之间的桥梁。控制器只控制数据的流向,不对数据做过多处理,仅仅从视图层发过来的请求中获得用户输入并将其中的有用信息发送给模型,同时还可以根据模型返回的数据指导视图层的更新。在JavaWeb中就是一个Servlet类
二、登录网站MVC实现
- 视图:显示登录页面,填好用户名和密码之后,点击提交按钮,信息提交至控制器。
- 控制器:接收到视图层(此处是网站页面)提交过来的数据,将其中的用户名和密码提取出来,交给模型。
- 模型:收到控制器传过来的数据之后,在数据库中查询是否有该用户名以及密码是否正确,并将结果返回至控制器。
- 控制器:控制器接收到模型发过来的结果之后,判断应该向视图层返回一个什么样的响应(比如登录成功页面或者登陆失败页面)。
- 视图层:视图层将接收到的响应显示在浏览器上。
三、MVC优点
首先,三个层分开,有利于开发过程中的分工。网页设计人员只负责设计网页,对业务逻辑熟悉的人员负责开发模型,开发控制器的开发人员只需要负责根据不同的需求选择不同的模型。 其次,控制层和模型层的分离,大大增强了模型的可重用性! 比如CSDN既可以通过网站登录,也可以通过APP登录。如果业务逻辑放在了控制层,那接收网页登录信息的控制层需要查询数据库验证登录信息,接收APP登录信息的控制层也需要查询数据库验证登录信息。但是无论是网页还是APP登录,查询数据库验证登录信息的操作都是一样的。所以,就可以把验证登录信息的这一部分业务逻辑从控制层分离出来,放在模型之中。这样,网页登录和APP登录的控制层只需调用该模型即可。假如又开发出了桌面应用,在登录时也只需在控制层调用该模型不需要再为验证登录业务单独开发。 实际上,模型只负责处理数据,至于数据是从网页还是APP或者桌面应用发过来的,它根本不关心,而且它也感知不到视图层的存在。
|