springMVC


在我们平时的javaWeb项目中。我们似乎用到了mvc模式,但是具体在哪里用到了却又傻傻分不清????。Controller,View层倒是好区分,可model层呢?service、Dao有事个什么玩意儿?????于是写下了这篇文章,让我们带着问题开始吧????!

  • 什么是mvc

  • 什么是springMVC

  • springMVC它解决了什么问题

  • springMVC它的原理是什么


一、MVC

一般我们都知道

  • C代表Controller:负责转发请求,对请求进行处理。
  • V代表View:视图,用于展示。

那M呢?以前一直以为Model就是用来承接数据的,就是一些单纯的java类用于对于数据库中的表。然而,并不是这样的。完整的Model应该还要包含对数据直接访问的权力,例如对数据库的访问

然而问题来了,我业务逻辑写在哪里啊,是C还是M❓。

由于C只是一个个控制器,不负责业务,它只负责安排人来执行任务。所以我们将复杂业务逻辑写在M中

万一有负责的业务逻辑呢?这势必会导致M层有复杂的方法。并且,为了代码复用,可以将数据库方法提取出来,这样就产生了Dao层。相当于此时M层又被分解了,一部分叫做Dao,另一部分叫做Entity,另一部分叫做Service。

  • Dao:进行数据库访问
  • Entity:用于承载数据,对应数据库中的表
  • Service:编写程序应有的功能(实现算法等等)

二、SpringMVC

SpringMVC是一个实现了MVC设计模式都轻量级Web框架

其工作流程如下:
springMVC

  1. 用户通过浏览器向服务器发送请求,请求会被Spring MVC的前端控制器DispatcherServlet所拦截;
  2. DispatcherServlet拦截到请求后,会调用HandlerMapping处理器映射器;
  3. 处理器映射器根据请求URL找到具体的处理器,生成处理器对象及处理器拦截器(如果有则生成)一并返回给DispatcherServlet;
  4. DispatcherServlet会通过返回信息选择合适的HandlerAdapter(处理器适配器);
  5. HandlerAdapter会调用并执行Handler(处理器),这里的处理器指的就是程序中编写的Controller类,也被称之为后端控制器;
  6. Controller执行完成后,会返回一个ModelAndView对象,该对象中会包含视图名或包含模型和视图名;
  7. HandlerAdapter将ModelAndView对象返回给DispatcherServlet;
  8. DispatcherServlet会根据ModelAndView对象选择一个合适的ViewReslover(视图解析器);
  9. ViewReslover解析后,会向DispatcherServlet中返回具体的View(视图);
  10. DispatcherServlet对View进行渲染(即将模型数据填充至视图中);
  11. 视图渲染结果会返回给客户端浏览器显示。

参考文献

MVC -维基百科
MVC引入SERVICE层 提高代码重用性 沟通CONTROL和MODEL
Spring MVC 4.2.4.RELEASE 中文文档
《Java EE企业级应用开发教程Spring+Spring MVC+MyBatis》