1. SpringMVC处理流程

2. SpringMVC架构

  2.1 框架结构

  2.2 框架流程

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

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

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

    4. DispatcherServlet调用HandlerAdapter处理器适配器。

    5. HandlerAdapter经过适配调用具体的处理器(controller,也叫后端控制器)。

    6. Controller执行完成返回ModelAndView。

    7. HandlerAdapter将Controller返回的执行结果ModelAndView返回给DispatcherServlet。

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

    9. ViewReslover解析之后返回具体的view。

    10.  DispatcherServlet根据View进行渲染视图(即将模型数据填充至视图jsp/freemaker..中)。

    11. DispatcherServlet响应用户。

    

    举个栗子!(不知道合不合适)

    1. 用户发送请求至前端控制器DispatcherServlet。  —— 奥巴马要OOXX本拉登。他不能自己干啊,于是把命令给秘书处。

    2. DispatcherServlet收到请求调用HandlerMapping处理器映射器。  —— 秘书处也不能上手干啊,于是秘书处找到杀手中介!我要一个杀手!

    3. 处理器映射器找到具体的处理器,生成处理器对象及处理器拦截器(如果有则生成)一并返回给DispatcherServlet。  —— 杀手中介给秘书处推荐了一个杀手。

    4. DispatcherServlet调用HandlerAdapter处理器适配器。  —— 秘书处让交通局给杀手提供了途径:飞机,火车,汽车..你想怎么过去

    5. HandlerAdapter经过适配调用具体的处理器(controller,也叫后端控制器)。  ——杀手想了想,还是飞机快,于是坐着飞机找到了本拉登。

    6. Controller执行完成返回ModelAndView。  ——把本拉登宰了,拿到一个人头~ 咦惹~

    7. HandlerAdapter将Controller返回的执行结果ModelAndView返回给DispatcherServlet。  ——交通局就血淋淋的~ 交给了秘书处。

    8. DispatcherServlet将ModelAndView传给ViewReslover视图解析器。  —— 秘书处一看,太可怕了,我们不能就这么给总统看啊。于是找到“美容院”

    9. ViewReslover解析之后返回具体的view。  ——经过一番包装过后,给回秘书处。

    10.  DispatcherServlet根据View进行渲染视图(即将模型数据填充至视图jsp/freemaker..中)。  ——秘书处整理一番,放进盒子里面。

    11. DispatcherServlet响应用户。  —— 交给奥巴马。

  2.3 组件说明   

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

    DispatcherServlet:前端控制器

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

    HandlerMapping:处理器映射器

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

    Handler:处理器

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

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

    HandlAdapter:处理器适配器

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

    View Resolver:视图解析器

      View Resolver负责将处理结果生成View视图(JSP,freemarker),View Resolver首先根据逻辑视图名解析成物理视图名即具体的页面地址,再生成View视图对象,最后对View进行渲染将处理结果通过页面展示给用户。

    View:视图

      springmvc框架提供了很多的View视图类型的支持,包括:jstlView、freemarkerView、pdfView等。我们最常用的视图就是jsp。

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

    需要用户开发的组件有handler(controller类)、view(jsp/freemarker velocity,thyeleaf)

 

SpringMVC的工作流程以及组件说明的更多相关文章

  1. SpringMVC的工作流程、组件说明以及常用注解说明

    1. SpringMVC处理流程 2. SpringMVC架构 2.1 框架结构 2.2 框架流程 1. 用户发送请求至前端控制器DispatcherServlet. 2. DispatcherSer ...

  2. SpringMVC的工作流程?Mybatis和hibernate区别?

    SpringMVC的工作流程?1. 用户发送请求至前端控制器DispatcherServlet2. DispatcherServlet收到请求调用HandlerMapping处理器映射器.3. 处理器 ...

  3. 面试题:SpringMVC的工作流程

    SpringMVC是当今最主流的Web MVC框架,没有之一,要做一名合格的JavaWeb工程师,学好它势在必行! 与Struts2原理不同,SpringMVC是通过最基础最传统的servlet来实现 ...

  4. Springmvc的工作流程

    1.向服务器发送http请求,请求被前端控制器DispatcherServlet捕获. 2.DispatcherServlet根据servlet.xml中的配置进行URL解析后,得到(URL),然后根 ...

  5. SpringMVC的工作流程-005

    1.用户发送请求至前端控制器DispatcherServlet           2.DispatcherServlet收到请求调用HandlerMapping处理器映射器.          3. ...

  6. 了解SpringMVC框架及基本工作流程

    传统原生的JSP+Servlet在开发上过程上虽然简单明了,JSP页面传递数据到Servlet,Servlet整理数据(逻辑开发)或者从数据库提取数据接着再转发到JSP页面上,但是其似乎只能止步于此, ...

  7. SpringMVC 工作流程

    版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.net/baidu_36697353/article/details/64444147 SpringMVC 工 ...

  8. SpringMVC工作流程 --通透较详细

    SpringMVC工作流程 SpringMVC工作流程 流程说明(重要): (1)客户端发送一个http请求给前端控制器(DispatcherServlet): (2)前端控制器(DispacherS ...

  9. 尚硅谷面试第一季-10SpringMVC的工作流程

    目录结构: 关键代码: web.xml <?xml version="1.0" encoding="UTF-8"?> <web-app xml ...

随机推荐

  1. Appium疑难杂症

    坑之初体验 在Appium的初体验中,遇到了一些坑坑洼洼.将他们记录下来,以后方便查阅. 1. session大于60秒没接收到命令自动关闭 通过Appium-Python-Client连接到appi ...

  2. 面试为什么需要了解JVM

    匠心零度 转载请注明原创出处,谢谢! 说在前面 如果你经常注意面试题,你会发现现在面试题多多少少会含有jvm相关的面试题,之前也把一些jvm面试题汇总了下:面试题系列一,那么为什么现在面试需要了解或者 ...

  3. ios开发之自定义textView

    自定义textView,从理论上讲很简单,根据需求自定义,比如我在开发中的需求就是现实一个字数的限制以及根据输入的文字改变提示剩余字数,那么开始我的基本思路就是自定义一个View,而里面包含一个子控件 ...

  4. 使用BEM命名规范来组织CSS代码

    BEM 是 Block(块) Element(元素) Modifier(修饰器)的简称 使用BEM规范来命名CSS,组织HTML中选择器的结构,利于CSS代码的维护,使得代码结构更清晰(弊端主要是名字 ...

  5. Mycat 分布式事务的实现

    引言:Mycat已经成为了一个强大的开源分布式数据库中间件产品.面对企业应用的海量数据事务处理,是目前最好的开源解决方案.但是如果想让多台机器中的数据保存一致,比较常规的解决方法是引入"协调 ...

  6. HighCharts之2D堆柱状图

    HighCharts之2D堆柱状图 1.HighCharts之2D堆柱状图源码 Stacked.html: <!DOCTYPE html> <html> <head> ...

  7. Linux以GB显示内存大小

    Linux以GB显示内存大小 youhaidong@youhaidong-ThinkPad-Edge-E545:~$ free -g total used free shared buffers ca ...

  8. java.lang.ArrayIndexOutOfBoundsException

    1.错误描述 Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 0 at com.you.m ...

  9. html标签自带样式总结

    一.html标签自带样式 head { display:none; } body { margin:8px; line-height:1.12; } button, textarea, input, ...

  10. mac下安装ELK

    本文主要为自己所走弯路而做的补充,对小白(比如我)来讲某些博客讲的还是高深了,特地来此补充说明一些东西. 主要步骤参考http://blog.csdn.net/ywheel1989/article/d ...