一、SpringMVC的概念以及原理
1、MVC基本概念
MVC全名是Model View Controller。
- 是模型(model)-视图(view)-控制器(controller)的缩写。
- 是一种使用mvc设计创建 Web 应用程序的模式。
- 是一种软件设计典范。
- 是软件工程中的一种软件架构模式。
MVC将业务逻辑、数据、界面显示分离的方法组织代码,在改变其中一层时,另外两层可能不需要改变,或作较少的修改即可。
Model(模型)
表示应用程序核心。
是应用程序中用于处理应用程序数据逻辑的部分。
通常模型对象负责在数据库中存取数据。
View(视图)
显示数据(数据库记录)。
是应用程序中处理数据显示的部分。
通常视图是依据模型数据创建的。
Controller(控制器)
是应用程序中处理用户交互的部分。通常控制器负责从视图读取数据,控制用户输入,并向模型发送数据。
2.MVC原理
MVC原理是View接收用户输入,发送请求给Controller,Controller调用Module完成具体操作。Module从数据库获取数据并进行业务逻辑判断,然后触发事件也就是间接返回数据给View。
为了加深大家的印象,我们引入MVP与MVC进行对比记忆。是MVC中的C改为P,英文单词全拼为Presenter,读作协调器。MVP即为即模型-视图-协调器。
下图是两种模式的对比
学习了MVC的概念以及原理下面我们将通过实现一个自定义注解来理解这些概念。
二、如何将餐馆应用场景与MVC对比
下面我们开始讲解如何将餐馆应用场景与MVC对比。服务员接收客户点菜、给客户上菜,对应的是表示层View,View收集用户输入数据,并展示数据。它们是不是很像?厨师接收了服务员的请求后,调配各种食材做出一道道香喷喷的菜,对应的是控制层Controller,Controller接收到请求后,调用方法处理这些请求,像不像厨师的工作?采购员从商场采购各种食材,并加工整理。采购员对应的是模型层Module,Module从数据库获取数据,并进行业务逻辑加工,它的工作是不是和采购员一样?
下面我们通过一张图直观地展示它们直接的对比效果。
-
三、MVC优缺点
1.MVC优点:
- 耦合性低。MVC 分层有助于管理复杂的应用程序,简化了分组开发。不同的开发人员可同时开发视图、控制器逻辑和业务逻辑,提高开发效率。
- 重用性高。
- 生命周期成本低,MVC使开发和维护用户接口的技术含量降低。
- 可维护性高。分离视图层和业务逻辑层也使得WEB应用更易于维护和修改。
2.MVC缺点:
- 不适合小型,中等规模的应用程序。花费大量时间将MVC应用到规模并不是很大的应用程序通常会得不偿失。
- 增加系统结构和实现的复杂性。对于简单的界面,严格遵循MVC,使模型、视图与控制器分离,会增加结构的复杂性,并可能产生过多的更新操作,降低运行效率。
视图对模型数据的低效率访问。依据模型操作接口的不同,视图可能需要多次调用才能获得足够的显示数据。对未变化数据的不必要的频繁访问,也将损害操作性能。
四、常用注解
@RequestMapping
Spring MVC通过@RequestMapping注解把URL请求和业务方法进行映射,在控制器的类定义处以及方法定义处都可以添加@RequestMapping,在类定义处添加相当于多了一层访问路径
@RequestMapping常用参数
value:指定URL请求的实际地址,是@RequestMapping的默认值
- method:指定请求的method类型,包括GET、POST、PUT、DELETE等
@RequestMapping(value = "/index",method = RequestMethod.POST)
public String index(){
System.out.println("接收到了请求");
//返回逻辑视图 逻辑视图相当于视图的别名 通过这个找到物理视图,也就是真正的视图
//注意:这里返回的只是页面名称,不是完整的页面访问路径
return "index";
}
上述代码表示只有POST请求可以访问该方法,如果使用其他请求访问的话,直接抛出异常,比如GET请求
params:指定request请求中必须包含的参数值,如果不包含的话,就无法调用该方法
以下链接是其他大佬的链接,可前往学习