Spring MVC 介绍(一)

Spring MVC 介绍(一)

1.Spring MVC 介绍

Spring Web MVC也是一种基于MVC设计模式的、请求驱动类型的轻量级Web框架。是Spring框架的一个模块(如下图所示)。既然是框架,那么大多数开发人员需要的功能框架都已经实现了,开发人员只需在框架上的基础上,完成个性化的需求。

img

Spring Web MVC也是服务到工作者模式的实现,但进行可优化。前端控制器是DispatcherServlet;应用控制器被拆为处理器映射器(Handler Mapping)和视图解析器(View Resolver);处理器为Controller接口(仅包含ModelAndView handleRequest(request, response) 方法)的实现(也可以是任何的POJO类);支持本地化(Locale)解析、主题(Theme)解析及文件上传等;提供了非常灵活的数据验证、格式化和数据绑定机制;提供了强大的约定大于配置(惯例优先原则)的契约式编程支持。

Spring MVC架构下图所示:

img

具体执行步骤如下:

  1. 用户发送请求至前端控制器DispatcherServlet。

  2. 前端控制器DispatcherServlet接收请求后,调用处理器映射器HandlerMapping。

  3. 处理器映射器HandlerMapping根据请求的url找到处理该请求的处理器Handler(即Controller),将处理器Handler返回给前端控制器DispatcherServlet。

  4. 前端控制器DispatcherServlet通过处理器适配器HandlerAdapter调用处理器Handler。

  5. 执行处理器Handler(即Controller,也叫后端控制器或应用控制器)。

  6. 处理器Handler执行完成后,返回ModelAndView(ModelAndView:实体数据和视图)给处理器适配器HandlerAdapter。

  7. 处理器适配器HandlerAdapter将处理器Handler执行的结果ModelAndView返回给前端控制器DispatcherServlet。

  8. 前端控制器DispatcherServlet将ModelAndView传给视图解析器ViewReslover。

  9. 视图解析器ViewReslover解析后返回具体视图View。

  10. 前端控制器DispatcherServlet对视图View进行渲染(即将模型数据填充至视图中)。

  11. 前端控制器DispatcherServlet响应用户。

Spring MVC提供的组件包括

  1. DispatcherServlet

  2. HandlerMapping

  3. HandlerAdapter

  4. ViewReslover

需要程序开发人员编写的组件包括

  1. Handler

  2. View

2.Spring-MVC 组件

  • 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,通过这种策略模式,很容易更换其他视图技术

  • View:DispatcherServlet通过ViewResolver取得了具体的view之后,就需要将model中的数据渲染到视图上,最终DispatcherServlet将渲染的结果响应到客户端。

取得了具体的view之后,就需要将model中的数据渲染到视图上,最终DispatcherServlet将渲染的结果响应到客户端。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值