说到mvc我们就要谈及java web的发展历程:
首先,一开始的java是应用在servlet端的,而servlet是运行在服务器端的逻辑程序,但是web应用肯定是需要有页面的,因此此时的java web就形成了servlet > java + HTML +CSS + javascipt。
但是后来发现这样写会导致十分的不方便,修改代码的话需要频繁的重启服务器。
因此,有出现了新的技术JSP。
JSP将HTML+CSS这些前端代码分离出去,因此修改页面后不需要重启服务器,只要刷新浏览器即可,同时又支持在jsp页面中编写java代码,正因为如此方便,导致后面都不用servlet,直接将逻辑,jdbc端都写在jsp页面。
但但是后面发现这样也不行,因为大量的java、HTML、CSS,JS代码耦合在一起,后期想剥离一部分代码都十分麻烦。
直到MVC模式的出现,它将我们的代码强制性的分成:model + view +controller
controller(控制层)
控制我们数据的流向,在web应用中可以说就是接口端
View(视图层)
提供给用户视图界面,也就是负责HTML + CSS
Model(模型层)
这里的模型分两类:数据模型和UI模型
数据模型就是实体类
UI模型就是逻辑
三层架构
有很多人会将MVC认为就是三层架构,其实不然。
三层架构模式是一种纯java的架构模式,没有页面视图这种东西。
三层架构:controller + service + dao
controller(控制层)
控制数据的流向,例如将数据从控制台打印或者将数据存储到另外的地方,因此就起了一个调度的作用。
service(服务层)
负责代码的逻辑。
dao(持久层)
与数据打交道,比例数据库,文件。
SpringMVC:
SpringMVC是一个基于Java实现了MVC设计模式的请求驱动类型的轻量级Web框架
springmvc组件:
1.前端控制器 :相当于MVC模式中的Controller,作为流程的枢纽,是流程的控制中心,由它来调用其他不同的组件来完成用户的请求处理,降低不同组件的耦合性。
2.处理器映射器:处理器映射器负责根据用户请求的地址找到相应的处理器。SpringMVC提供不同的映射器,比 如:配置文件的方式、实现接口的方式、注解方式。
3.处理器适配器:通过处理器适配器来对处理器(方法)进行执行,这是适配器模式的应用,通过扩展适配器来对不 同类型的处理器进行执行。
4.处理器:后端控制器,在前端控制器下对具体的用户的请求进行处理。
5.视图解析器:负责根据结果生成相应的视图对象。首先根据逻辑视图名(页面文件的文件名)解析成 物理视图名(具体的页面文件的地址),生成View视图对象,最后对View进行渲染,将结果通过 页面展示给用户看。