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框架。
其工作流程如下:
- 用户通过浏览器向服务器发送请求,请求会被Spring MVC的前端控制器DispatcherServlet所拦截;
- DispatcherServlet拦截到请求后,会调用HandlerMapping处理器映射器;
- 处理器映射器根据请求URL找到具体的处理器,生成处理器对象及处理器拦截器(如果有则生成)一并返回给DispatcherServlet;
- DispatcherServlet会通过返回信息选择合适的HandlerAdapter(处理器适配器);
- HandlerAdapter会调用并执行Handler(处理器),这里的处理器指的就是程序中编写的Controller类,也被称之为后端控制器;
- Controller执行完成后,会返回一个ModelAndView对象,该对象中会包含视图名或包含模型和视图名;
- HandlerAdapter将ModelAndView对象返回给DispatcherServlet;
- DispatcherServlet会根据ModelAndView对象选择一个合适的ViewReslover(视图解析器);
- ViewReslover解析后,会向DispatcherServlet中返回具体的View(视图);
- DispatcherServlet对View进行渲染(即将模型数据填充至视图中);
- 视图渲染结果会返回给客户端浏览器显示。
参考文献
MVC -维基百科
MVC引入SERVICE层 提高代码重用性 沟通CONTROL和MODEL
Spring MVC 4.2.4.RELEASE 中文文档
《Java EE企业级应用开发教程Spring+Spring MVC+MyBatis》