10. SpringMVC框架概述
1、SpringMVC 概述
springmvc是spring框架的一个模块,springmvc和spring无需通过中间整合层进行整合。
springmvc是一个基于mvc的web层框架,方便前后端数据的传输.
Spring MVC 拥有控制器,接收外部请求,解析参数传给服务层.
2、SpringMVC运行流程
步骤:
- 用户向服务器发送请求,请求被Spring 前端控制Servelt DispatcherServlet捕获;
- 前端控制器DispatcherServlet接收请求后,调用处理器映射HandlerMapping。
处理器映射器根据请求的url找到处理该请求的处理器Handler(即Controller),将处理器Handler返回给前端控制器DispatcherServlet。
- DispatcherServlet 根据获得的Handler,选择一个合适的HandlerAdapter。 在填充Handler的入参过程中,根据你的配置,Spring将帮你做一些额外的工作:
HttpMessageConveter: 将请求消息(如Json、xml等数据)转换成一个对象,将对象转换为指定的响应信息
数据转换:对请求消息进行数据转换。如String转换成Integer、Double等
数据格式化:对请求消息进行数据格式化。 如将字符串转换成格式化数字或格式化日期等
数据验证: 验证数据的有效性(长度、格式等),验证结果存储到BindingResult或Error中 - Handler(自己的控制器)执行完成后,向DispatcherServlet 返回一个ModelAndView对象;
- 根据返回的ModelAndView,选择一个适合的ViewResolver(必须是已经注册到Spring容器中的ViewResolver)返回给DispatcherServlet ;
- ViewResolver 结合Model和View,来渲染视图
- 将渲染结果返回给客户端。
3、SpringMVC 组件
- **DispatcherServlet:**Spring中提供了org.springframework.web.servlet.DispatcherServlet类,它从HttpServlet继承而来,它就是Spring MVC中的前端控制器(Front controller)。
- **HandlerMapping:**DispatcherServlet自己并不处理请求,而是将请求交给页面控制器。那么在DispatcherServlet中如何选择正确的页面控制器呢?这件事情就交给HandlerMapping来做了,经过了HandlerMapping处理之后,DispatcherServlet就知道要将请求交给哪个页面控制器来处理了。
- **HandlerAdapter:**经过了HandlerMapping处理之后,DispatcherServlet就获取到了处理器,但是处理器有多种,为了方便调用,DispatcherServlet将这些处理器包装成处理器适配器HandlerAdapter,HandlerAdapter调用真正的处理器的功能处理方法,完成功能处理;并返回一个ModelAndView对象(包含模型数据、逻辑视图名)。
- **ModelAndView:**DispatcherServlet取得了ModelAndView之后,需要将把逻辑视图名解析为具体的View,比如jsp视图,pdf视图等,这个解析过程由ViewResolver来完成。
- **ViewResolver:**ViewResolver将把逻辑视图名解析为具体的View,通过这种策略模式,很容易更换其他视图技术。
Resolver将把逻辑视图名解析为具体的View,通过这种策略模式,很容易更换其他视图技术。 - **View:**DispatcherServlet通过ViewResolver取得了具体的view之后,就需要将model中的数据渲染到视图上,最终DispatcherServlet将渲染的结果响应到客户端。