前言:闲谈一下我学Spring MVC的原因吧,我的第一份工作是在一个物流公司维护他们的系统,差不多是做二次开发吧。他们的后台是用的SSM(Spring+Spring MVC+Mybatis),我之前对这三个框架中的两个是一点都不了解的,对Spring也只是知道一点皮毛,么办法,干我们这行,要用什么就学什么呗。现在就对自己学习过程的一些经验进行分享和对一些知识进行梳理,方便自己日后查阅。如有幸帮助到需要学习的人将是无上关荣,若有什么错误也欢迎大家指正。
1.Spring MVC是什么?
它是基于java的MVC框架,是SpringFrameWork的后续产品,用在web层进行简化我们的开发。
2.Spring MVC较之于其他MVC框架有什么优势?我们为什么要选择这个框架而不是其他的呢?
Spring的厉害我相信大家都知道的啦,所谓大树底下好乘凉,由于Spring MVC是Spring的一部分,所以它可以与Spring进行无缝连接,而不需要进行整合。Spring MVC的安全性还是比较高的,暂时还没有出现什么重大的漏洞。由于易用,所以开发效率还是蛮高的。
3.Spring MVC的总体设计
(这里我从网上找来一张图片进行说明)
处理流程说明:
(1)用户发送请求被前端控制器DispatcherServlet拦截。
(2)前端控制器DispatcherServlet发任务给处理器映射器HandlerMapping来解析请求。
(3)处理器映射器HanflerMapping根据Url找到具体的处理器Handler和处理器拦截器(如果有的话)一并返回给前端控制器DispaycherServlet完成它的任务。
(4)前端控制器DispatcherServlet发任务给处理器适配器HandlerAdapter来调用处理器Handler.
(5)处理器适配器接到任务调用处理器Handler(我们有时候也叫后端控制器Controller)
(6)Controller执行完成返回一个ModelAndView给处理器适配器。
(7)HandlerAdapter将ModelAndView返回DispatcherServlet完成它的任务。
(8)DispatcherServet发任务给视图解析器ViewResolver解析ModelAndView.
(9)ViewResolver解析后返回具体的View给前端控制器。
(10)前端控制器对视图进行渲染(把模型数据封装到视图中去)
(11)DispatcherServlet然后响应用户,把视图传给用户。
对其中的一些组件进行说明:
(1)DispatcherServlet:前端控制器,我经常称它为一个转发器,相当于一个项目中的项目经理这个角色。
(2)HandlerMapping:处理器映射器,我称之为导航器,它能够找到你的Controller。
(3)HandlerAdapter:处理器适配器,匹配更多类型的处理器。
(4)Handler:处理器(Controller)对用户的具体请求进行处理。
(5)ViewResolver:视图解析器,那就是美图秀秀啦,啊哈哈。