分享人:崔震
1.背景介绍
2.知识剖析
3.常见问题
4.编码实战
5.扩展思考
6.参考文献
7.更多讨论
Spring MVC属于SpringFrameWork的后续产品,已经融合在Spring Web Flow里面。Spring 框架提供了构建 Web 应用程序的全功能 MVC 模块。
使用 Spring 可插入的 MVC 架构,从而在使用Spring进行WEB开发时,可以选择使用Spring的SpringMVC框架或集成其他MVC开发框架.
基于Java的实现了Web MVC设计模式的请求驱动类型的轻量级Web框架,即使用了MVC架构模式的思想,将web层进行职责解耦,
基于请求驱动指的就是使用请求-响应模型,框架的目的就是帮助我们简化开发,Spring Web MVC也是要简化我们日常Web开发的。
1.MVC设计模式
MVC设计模式
M-Model 模型
V-View 视图(做界面的展示 jsp,html……)
C-Controller 控制器(接收请求—>调用模型—>根据结果派发页面)
XML配置文件
主要有两个配置文件
web.xml文件,启动前端控制器。
applacationContext.xml文件,对前端控制器的配置
SpringMVC工作流程概述
1、客户端向web服务器(如tomcat)发送一个http请求,
web服务器对http请求进行解析,解析后的URL地址如果匹配了DispatcherServlet的映射路径(通过web.xml中的servlet-mapping配置
,web容器就将请求交给DispatcherServlet处理。
2、DispatcherServlet接收到这个请求后,再对URL进行解析,得到请求资源标识符(URI)。
然后调用相应方法得到的HandlerMapping对象,再根据URI,调用这个对象的相应方法获得Handler对象以及它对应的拦截器。
(在这里只是获得了Handler对象,并不会操作它,在SpringMVC中,是通过HandlerAdapter对Handler进行调用、控制的)
3、DispatcherServlet根据得到的Handler对象,选择一个合适的HandlerAdapter,创建其实例对象,执行拦截器中的preHandler()方法。
4、在拦截器方法中,提取请求中的数据模型,填充Handler入参,所以所有准备工作都已做好,
开始执行Handler(我们写的controller代码并不是能被直接执行,需要有刚才那些操作,才能转变为Handler被执行)。
5、Handler执行完毕后返回一个ModelAndView对象给DispatcherServlet。
6、这个ModleAndView只是一个逻辑视图,并不是真正的视图,DispatcherServlet通过ViewResolver视图解析器将逻辑视图转化为真正的视图
(通俗理解为将视图名称补全,如加上路径前缀,加上.jsp后缀,能指向实际的视图)。
7、DispatcherServlet通过Model将ModelAndView中得到的处数据解析后用于渲染视图。将得到的最终视图通过http响应返回客户端。
springMVC优缺点
优点:一:完全基于接口编程,真正实现了视图无关。除了jsp,还可以使用Velocity和xstl或其他视图技术,甚至是自定义的视图技术--只需要简单的实现view接口
二:Spring MVC框架以DispatchServlet为核心控制器,该控制器负责拦截用户的所有请求。
三:Spring MVC所有控制器都必须实现Controler接口,该接口定义了ModelAndView handleRequest(request,response)方法,通过实现该接口实现用户的业务逻辑控制。
缺点一:Spring与MVC 的Servlet API 耦合,难以脱离容器独立运行
二:太过于细分,开发效率低
三:过度追求完美,有过度设计的危7险
DispatcherServlet:
https://www.cnblogs.com/baiduligang/p/4247164.html
https://blog.csdn.net/u011350541/article/details/48434871