MVC设计模式
MVC应用程序的主流开发技术有Servlet、PHP、.net
Servlet是基于Java语言的动态WEB开发技术,Servlet指的是J2EE中所提出来的企业级服务器开发规范。
原生Servlet构建的MVC开发模式有几个缺点:
Servlet本身采用单例设计模式,生命周期由服务器维护,存在线程安全隐患的问题;
随着Servlet数量的增加,对服务器的存储空间也会产生压力;
使用Servlet响应用户请求时,每一个响应逻辑都需要开发者不厌其烦地做些重复的事情,如,解析请求包中的数据、构建响应包、设置页面跳转等等。
概念:
MVC是模型(Model)、视图(View)、控制器(Controller)的缩写,是一种分离显示业务逻辑、数据和界面的设计模式
组件关系:
模型(Model)表示应用程序核心,是应用程序中用于处理应用程序数据逻辑的部分,通常负责在数据库中存取数据。
视图(View)用来显示数据,是应用程序中处理数据显示的部分,通常View是依据Model的数据而创建的。
控制器(Controller)用来处理用户输入并调用模型和视图来满足用户的需求,是应用程序中处理用户交互的部分,
通常Controller负责从View读取数据,控制用户输入,并向Model发送数据。
MVC优势:
低耦合性;
高重用性和可适用性;
较低的生命周期成本;
快速的部署;
可维护性;
有利于软件工程化管理。
MVC的不足:
增加了系统结构和实现的复杂性;
视图与控制器间的过于紧密的连接;
视图对模型数据的低效率访问。
SpringMVC是Spring生态圈中的WEB-MVC框架。
SpringMVC和Spring的关系
由于Spring的概念有狭义广义两种理解方式,SpringMVC和Spring的关系可以从如下两个角度理解:
水平角度:SpringMVC是Spring生态圈中的一个功能模块,两者是包含与被包含的关系;
垂直角度:SpringMVC是建立在Spring核心功能之上的一个WEB-MVC框架,是Spring核心功能的延伸和扩展。
Struts2与SpringMVC对比
Struts2很多功能也需要借助于Spring实现,SpringMVC和Spring有直属血缘的关系,两者吻合度更高。
使用SpringMVC时所需要的其他逻辑组件都经由IOC创建Spring容器管理,可根据组件特性保证其线程安全性。
SpringMVC利用DI功能,能轻松地装配好各组件之间的依赖,开发者只需要关注编写自己的业务逻辑便可。