架构流程

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

2、  DispatcherServlet收到请求调用HandlerMapping处理器映射器。

3、  处理器映射器根据请求url找到具体的处理器,生成处理器对象及处理器拦截器(如果有则生成)一并返回给DispatcherServlet。

4、  DispatcherServlet通过HandlerAdapter处理器适配器调用处理器

5、  执行处理器(Controller,也叫后端控制器)。

6、  Controller执行完成返回ModelAndView

7、  HandlerAdapter将controller执行结果ModelAndView返回给DispatcherServlet

8、  DispatcherServlet将ModelAndView传给ViewReslover视图解析器

9、  ViewReslover解析后返回具体View

10、              DispatcherServlet对View进行渲染视图(即将模型数据填充至视图中)。

11、              DispatcherServlet响应用户

组件说明

以下组件通常使用框架提供实现:

  DispatcherServlet:前端控制器

用户请求到达前端控制器,它就相当于mvc模式中的c,dispatcherServlet是整个流程控制的中心,由它调用其它组件处理用户的请求,dispatcherServlet的存在降低了组件之间的耦合性。

  HandlerMapping:处理器映射器

HandlerMapping负责根据用户请求找到Handler即处理器,springmvc提供了不同的映射器实现不同的映射方式,例如:配置文件方式,实现接口方式,注解方式等。

Handler:处理器

Handler 是继DispatcherServlet前端控制器的后端控制器,在DispatcherServlet的控制下Handler对具体的用户请求进行处理。

由于Handler涉及到具体的用户业务请求,所以一般情况需要程序员根据业务需求开发Handler。

 HandlAdapter:处理器适配器

通过HandlerAdapter对处理器进行执行,这是适配器模式的应用,通过扩展适配器可以对更多类型的处理器进行执行。

View Resolver:视图解析器

View Resolver负责将处理结果生成View视图,View Resolver首先根据逻辑视图名解析成物理视图名即具体的页面地址,再生成View视图对象,最后对View进行渲染将处理结果通过页面展示给用户。 springmvc框架提供了很多的View视图类型,包括:jstlView、freemarkerView、pdfView等。

一般情况下需要通过页面标签或页面模版技术将模型数据通过页面展示给用户,需要由程序员根据业务需求开发具体的页面。

最新文章

  1. 【原】小搞一下 javascript算法
  2. 大熊君大话NodeJS之 ------ Connect中间件第二季(源码分析)
  3. ASP.NET 表单验证实现浅析
  4. 如何清理photoshop cs6 被升级的烦人的adobe creative cloud组件
  5. 使用JDBC处理MySQL大数据
  6. dstat 备忘
  7. SQL 数据库 right join 和left join 的区别
  8. Juicer javascript 模板引擎
  9. Migration from Zend Framework v2 to v3
  10. BZOJ_1901_&_ZJU_2112_Dynamic_Rankings_(主席树+树状数组/线段树+(Treap/Splay))
  11. Java中long和double的原子性
  12. C库专题(Day1)
  13. 给UIImage添加蒙版
  14. NSLog 输出文件名、方法名、行号
  15. A*算法实现
  16. Ioc在重构代码中的应用
  17. .bind.apply() 解决 new 操作符不能用与 apply 或 call 同时使用
  18. 最新合购网源码net.asp程序 彩票合买功能采用全新内核、全新架构,更小巧、功能更强、更快、更安全稳定
  19. poj 1723 SOLDIERS 带权中位数
  20. jquery.autocomplete 搜索文字提示

热门文章

  1. 012_Eclipse中使用 HDFS URL API 事例介绍
  2. iOS下的WiFi开发
  3. Mybatis入门2-动态代理实现CRUD
  4. jsp中的basePath和path(绝对路径 相对路径)
  5. 如何在java代码中调用一个web项目jsp或者servlet
  6. 针对oracle集群的连接配置
  7. Java正则表达中Greedy Reluctant Possessive 的区别
  8. Anton and School - 2 (组合数学)
  9. Flume的Avro Sink和Avro Source研究之二 : Avro Sink
  10. HDU4819 Mosaic