本篇博文以MVC原理为基础,讲解了MVC的架构概念 需要解决的问题,以及使用SpringMVC搭建项目示例让读者了解MVC架构的优秀实现者SpringMVC框架,最后以DispatcherServlet简要的分析了SpringMVC的请求和响应流程。希望这篇博文能让大家更好的理解SpringMVC的相关原理。
目录
-
MVC框架
1、何为MVC框架
- M 即MODEL 模型对象 用于web进行请求和响应的数据传输对象
- V 即VIEW 视图对象 用户呈现响应数据的视图展示
- C 即Controller 控制对象 用户对web请求数据进行逻辑处理
MVC架构模式 将数据,视图展示、逻辑处理分离出来,便于我们针对某一方面(比如逻辑处理的变更不会变动视图和处理、或者视图变更不会影响业务逻辑)
2、MVC框架解决的问题
- 当浏览器发送一个http请求,web是如何接受这个请求并指定相应的java类来执行业务逻辑并返回处理结果的?
- web 应用的是典型的“请求--响应”模式的应用,数据是如何顺利流转于浏览器和java世界之间的?面对http协议和java世界数据的不匹配性,我们如何能够做到在流转时数据类型的自动转换?
- Web容器是一个典型的多线程环境,针对每个http请求,web容器的线程池会分配一个特定的线程进行处理。那么如何保证在多线程环境下, 处理请求的java类是线程安全的对象?如何保证数据的流转和访问都是线程安全的?
这个不是web容器的概念吗?跟MVC框架有啥关系
- Controller层作为MVC的核心控制器,如何能够在最大程度上支持功能点上的拓展?
- view层的表现形式是多种多样的,随着web开发技术的不断发展,mvc如何在框架级别提供一种完全透明的方式来应对不同的视图表现形式?
- MVC模式虽然很直观的为我们规定了表示层的各种元素,但是如何通过某种机制把这些元素有机整合在一起,从而成为一个整体呢?
总的来说分成三大部分 1、将web页面的请求传给服务器
- 根据不同的请求处理不同的逻辑单元
- 3、返回处理结果并跳转至响应页面。
3、MVC框架
常使用的SpringMVC框架 Jsp+servlet+javaBean、Struct2、SpringMVC、grails
SpringMVC框架
1、springMVC简介
SpringMVC是以请求驱动,基于Servlet功能实现的将web请求转发给控制器,控制器进行相关逻辑处理,转换为数据对象并通过视图解析器将对应的数据展示到特定视图。核心入口是DispatcherServlet类。
2、SpringMVC核心组件
- DispatcherServlet类
- 处理器映射器 HandlerMapping
- 处理器适配器 HandlerAdapte
- 视图解析器 ResourceViewResolver
3、SpringMVC流程示例
https://github.com/liushangzaibeijing/ssm.git
DispatcherServlet入口
下面我们从Spring核心入口类入手来探究SpringMVC的原理奥妙。
在UML类图中,红色标明的是Serv