探索SpringMVC-九大组件

前言

今天我们先来看看DispatcherServlet都有哪些组件,分别有什么作用。

DispatcherServlet内部的九大组件

上回我们聊到DispatcherServlet初始化的onRefresh。在那个地方我说他会初始化SpringMVC的九大组件。那么为什么是九大组件?都用来干什么的?有什么用?别着急,继续来看代码。

	/**
	 * DispatcherServlet的实现
	 */
	@Override
	protected void onRefresh(ApplicationContext context) {
		initStrategies(context);
	}
    
    protected void initStrategies(ApplicationContext context) {
    	// 初始化文件上传解析器
        this.initMultipartResolver(context);
        // 初始化本地语言解析器,也即国际化
        this.initLocaleResolver(context);
        // 初始化主题解析器
        this.initThemeResolver(context);
        // 初始化处理器映射。
        this.initHandlerMappings(context);
        // 初始化处理器适配器
        this.initHandlerAdapters(context);
        // 初始化处理器异常解析器
        this.initHandlerExceptionResolvers(context);
        // 初始化请求转视图名字翻译器
        this.initRequestToViewNameTranslator(context);
        // 初始化视图解析器
        this.initViewResolvers(context);
        // FlashMap管理器
        this.initFlashMapManager(context);
    }

到这里,我们就看到赫然就是九个组件。那为什么我们更多听到的都是说八大组件呢?这个或许跟官方有些关系。因为官方文档都没有提及RequestToViewNameTranslator这玩意儿。因此他也就没啥存在感了。这东西吧,我们也能从名字看出来它可以干嘛:将请求映射到视图名字的翻译。

1.1.2. Special Bean Types

Bean typeExplanation
HandlerMapping将请求映射到处理器,且处理器带有前置处理&后置处理的拦截器。也就是我们说的HandlerExecutionChain.主要有两款:一个是RequestMappingHandlerMapping(对@RequestMapping方法提供支持) 另一个是SimpleUrlHandlerMapping(直接将URI映射到handler)
HandlerAdapter协助DispatcherServlet 调用handler,而无需关心handler是怎么被调用的具体细节。简而言之,HandlerAdapter就是为了屏蔽Handler的具体调用细节而存在的
HandlerExceptionResolver用于处理异常的策略,可以映射到处理器、HTML错误页面,或者其他目标处理。详见异常。
ViewResolver负责将Handler返回的逻辑视图名字解析为实际View,并使用改View渲染response。参考视图解决方案视图技术
LocaleResolver, LocaleContextResolver解析客户端使用的本地语言和时区,从而为其提供国际化视图。详见Locale
ThemeResolver解析你的web应用使用的主题——例如:提供个人布局。详见主题。所谓主题,大家可以简单理解为网站的皮肤吧
MultipartResolver通过一些multipart解析库,解析多部份请求的抽象(例如,浏览器格式上传的文件)。详见Multipart Resolver。可以简单理解为处理文件上传的解析
FlashMapManager存储和获取“输入”和“输出”的FlashMap。FlashMap可以用于请求之间传递属性,通常是在重定向时使用。详见Flash Attributes.

小结

作为一款成熟的框架,SpringMVC考虑了完整的功能:

  1. 提供请求Http服务:
    • 请求静态资源ViewResolver&RequestToViewNameTranslator
    • 动态资源请求HandlerMapping&HandlerAdapter
    • 重定向FlashMapManager
    • 文件上传&下载MultipartResolver
  2. 网站外观ThemeResolver
  3. 异常处理HandlerExceptionResolver
  4. 国际化LocaleResolver

后记

接下来,我们讲针对九大组件进行更深入的探索,了解他们是怎么完成自己的工作的。

上一篇:
探索SpringMVC-web上下文
下一篇:
探索SpringMVC-九大组件之HandlerAdapter

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值