Spring MVC 流程图ITeye - 牛牛娱乐

Spring MVC 流程图ITeye

2019-01-13 05:10:49 | 作者: 浩言 | 标签: 恳求,目标,一个 | 浏览: 2334



 

 

 

Spring作业流程描绘       1. 用户向服务器发送恳求,恳求被Spring 前端操控Servelt DispatcherServlet捕获;       2. DispatcherServlet对恳求URL进行解析,得到恳求资源标识符(URI)。然后依据该URI,调用HandlerMapping取得该Handler装备的一切相关的目标(包括Handler目标以及Handler目标对应的拦截器),最终以HandlerExecutionChain目标的方式回来;       3. DispatcherServlet 依据取得的Handler,挑选一个适宜的HandlerAdapter。(附注:假如成功取得HandlerAdapter后,此刻将开端履行拦截器的preHandler(...)办法)        4.  提取Request中的模型数据,填充Handler入参,开端履行Handler(Controller)。 在填充Handler的入参过程中,依据你的装备,Spring将帮你做一些额定的作业:       HttpMessageConveter: 将恳求音讯(如Json、xml等数据)转化成一个目标,将目标转化为指定的呼应信息       数据转化:对恳求音讯进行数据转化。如String转化成Integer、Double等       数据根式化:对恳求音讯进行数据格局化。 如将字符串转化成格局化数字或格局化日期等       数据验证: 验证数据的有效性(长度、格局等),验证成果存储到BindingResult或Error中       5.  Handler履行完成后,向DispatcherServlet 回来一个ModelAndView目标;       6.  依据回来的ModelAndView,挑选一个合适的ViewResolver(有必要是现已注册到Spring容器中的ViewResolver)回来给DispatcherServlet ;       7. ViewResolver 结合Model和View,来烘托视图       8. 将烘托成果回来给客户端。 Spring作业流程描绘     为什么Spring只运用一个Servlet(DispatcherServlet)来处理一切恳求?      详细见J2EE规划形式-前端操控形式     Spring为什么要结合运用HandlerMapping以及HandlerAdapter来处理Handler?     契合面向目标中的单一责任准则,代码架构明晰,便于保护,最重要的是代码可复用性高。如HandlerAdapter或许会被用于处理多种Handler。

 

 

From:http://blog.csdn.net/zuoluoboy/article/details/19766131

 

DispatcherServlet

 

/**
 * This implementation calls {@link #initStrategies}.
 @Override
 protected void onRefresh(ApplicationContext context) {
 initStrategies(context);
 * Initialize the strategy objects that this servlet uses.
 * p May be overridden in subclasses in order to initialize further strategy objects.
 protected void initStrategies(ApplicationContext context) {
 initMultipartResolver(context);
 initLocaleResolver(context);
 initThemeResolver(context);
 initHandlerMappings(context);
 initHandlerAdapters(context);
 initHandlerExceptionResolvers(context);
 initRequestToViewNameTranslator(context);
 initViewResolvers(context);
 initFlashMapManager(context);
 }

 

 

 

DispatcherServlet中运用的特别的Bean

DispatcherServlet默许运用WebApplicationContext作为上下文,因而咱们来看一下该上下文中有哪些特别的Bean:

1、Controller:处理器/页面操控器,做的是MVC中的C的工作,但操控逻辑转移到前端操控器了,用于对恳求进行处理;

2、HandlerMapping:恳求到处理器的映射,假如映射成功回来一个HandlerExecutionChain目标(包括一个Handler处理器(页面操控器)目标、多个HandlerInterceptor拦截器)目标;如BeanNameUrlHandlerMapping将URL与Bean姓名映射,映射成功的Bean就是此处的处理器;

3、HandlerAdapter:HandlerAdapter将会把处理器包装为适配器,然后支撑多种类型的处理器,即适配器规划形式的使用,然后很简单支撑许多类型的处理器;如SimpleControllerHandlerAdapter将对完成了Controller接口的Bean进行适配,而且掉处理器的handleRequest办法进行功用处理;

4、ViewResolver:ViewResolver将把逻辑视图名解析为详细的View,经过这种战略形式,很简单替换其他视图技能;如InternalResourceViewResolver将逻辑视图名映射为jsp视图;

5、LocalResover:本地化解析,由于Spring支撑国际化,因而LocalResover解析客户端的Locale信息然后便利进行国际化;

6、ThemeResovler:主题解析,经过它来完成一个页面多套风格,即常见的类似于软件皮肤作用;

7、MultipartResolver:文件上传解析,用于支撑文件上传;

8、HandlerExceptionResolver:处理器反常解析,能够将反常映射到相应的一致过错界面,然后显现用户友爱的界面(而不是给用户看到详细的过错信息);

9、RequestToViewNameTranslator:当处理器没有回来逻辑视图名等相关信息时,主动将恳求URL映射为逻辑视图名;

10、FlashMapManager:用于办理FlashMap的战略接口,FlashMap用于存储一个恳求的输出,当进入另一个恳求时作为该恳求的输入,一般用于重定向场景,后边会细述

版权声明
本文来源于网络,版权归原作者所有,其内容与观点不代表牛牛娱乐立场。转载文章仅为传播更有价值的信息,如采编人员采编有误或者版权原因,请与我们联系,我们核实后立即修改或删除。

猜您喜欢的文章

阅读排行

  • 1

    Java中字符串的使用ITeye

    字符串,字符,比较
  • 2
  • 3

    UTLITeye

    数据,目录,文件
  • 4
  • 5
  • 6

    java与函数式编程ITeye

    函数,编程,一些
  • 7
  • 8
  • 9
  • 10