一、MVC模式
- MVC模式是指Model-View-Controller(模型-视图-控制器)模式,是开发Web应用程序时常用的一种代码分层模式
- MVC模式是软件工程中的一种架构模式,会强制行的把系统的输入、处理和输出分开,是系统从功能上形成Model-View-Controller三个基本部分:
视图(View)-对应组件:JSP或者HTML文件:负责格式化数据并把它们呈现给用户,包括数据展示、数据验证、界面设计等
控制器(Controller)-对应组件:Servlet:负责接收并转发请求,对请求进行处理后指派视图并将响应结果发送给客户端
模型(Model)-对应组件:JavaBean:模型对象拥有最多的处理任务,是应用程序的主体部分,它负责业务逻辑的处理和实现对数据的操作
1.1 MVC整体流程图
1.2 JSP Model1
1.3 JSP Model2
- Servlet:接受前端请求并调用JavaBean
- JavaBean:处理业务并操作数据库
- JSP:将处理结果响应到浏览器呈现给用户
1.4 MVC的优缺点
优点
- MVC三个模块相互独立,松耦合架构
- 多视图共享一个模型,大大提高代码的可重用性
- 控制器提高了应用程序的灵活性和可配置性
- 有利于软件工程化管理
缺点
- 增加了系统结构和实现的复杂性,不适合小型项目
- 视图层与模型之间需要控制器做中间的连接控制,所以效率较低
二、Spring MVC架构
- 用Controller替换JSP Model2模型中的Servlet
- Controller收到请求后,完成业务处理并用Model模型对象存储处理结果
- Controller调用相应的视图解析器View对处理结果进行视图渲染,最终客户端得到响应信息
2.1 Spring MVC环境搭建
2.2 Spring MVC请求处理流程
- 浏览器发送请求至前端控制器
- 前端控制器收到请求后调用处理器映射器
- 处理器映射器找到具体的Handler处理器返回给前端控制器
- 前端控制器调用处理器适配器
- 处理器适配器去调用具体的处理器(Controller)
- Controller返回一个ModelAndView对象给处理器适配器
- 处理器适配器将接收到的MdoelAndView对象返回给前端控制器
- 前端控制器将ModelAndView对象传给视图解析器进行解析
- 视图解析器将解析结果View返回给前端控制器
- 前端控制器根据View进行视图渲染
- 前端控制器响应浏览器的请求
2.3 Spring MVC体系结构
DispatcherServlet(前端控制器)
- Spring MVC最核心的类
- web.xml中配置
Handler(处理器):对应MVC中的C(Controller层)
- 类型:Object
- zuoyong:实际处理请求
- 标注了@RequestMapping的所有方法都可以看做是一个Handler
ModelAndView
- 逻辑视图名
- 模型对象
核心组件
HandlerMapping(处理器映射)
- BeanNameUrlHanderMapping(默认)
- 将请求URL映射到同名的控制器Bean上
- DefaultAnnotationHandlerMapping
- 将请求映射到标注@RequestMapping注解的控制器和处理方法上
- RequestMappingHandlerMapping
HandlerAdapter(适配器)
- AnnotationMethodHandlerAdapter
- RequestMappingHandlerAdapter
ViewResolver(视图解析器)
- InternalResourceView
2.4 Spring MVC框架特点
- 清晰地角色划分
- 灵活的配置功能
- 提供了大量的控制器接口和实现类
- 真正做到与View层的实现无关(JSP、Velocity、Xslt等)
- 国际化支持
- 面向接口编程
- Spring提供了Web应用开发的一整套流程,不仅仅是MVC,它们之间可以很方便的结合一起