springmvc-九大组件
MultipartResolver
文件处理器,用于处理上传请求。处理方法是将普通的request包装成MultipartHttpServletRequest,后者可以直接调用getFile方法获取File
LocaleResolver
当前环境处理器,解析视图需要两个参数:一个是视图名,另一个是Locale。视图名是处理器返回的,Locale就是LocaleResolver要做的事情,LocaleResolver负责从request解析出Locale
Locale表示一个区域,有了这个就可以对不同区域的用户显示不同的结果
springmvc主要有两个地方用到了Locale:
- ViewResolver视图解析
- 国际化资源或者主题
ThemeResolver
主题处理器,用于解析主题
springmvc中一个主题对应一个properties文件,里面存放着根当前主题相关的所有资源,如图片、css样式等
springmvc的主题也支持国际化,同一个主题不同区域也可以显示不同的风格
springmvc中和主题相关的类有:ThemeResolver、ThemeSource和Theme
主题是通过一系列资源来具体体现的,要得到一个主题的资源,首先要得到资源的名称,这是ThemeResolver的工作。然后通过主题名称找到对应的主题文件(可以理解为一个配置文件),这时ThemeSource的工作。最后从主题获取资源就可以了
HandlerMappings
处理映射器,用来查找Handler的
springmvc中有很多请求,每个请求都需要一个Handler处理, HandlerMappings决定具体接收到请求后由哪个Handler处理
HandlerAdapters
处理适配器,是一个适配器
springmvc中的Handler可以是任意形式的,只有能处理请求就可以。但Servlet需要处理方法的结构是固定的,都是以request和response为参数的方法。如何让固定的Servlet处理方法调用灵活的Handler来进行处理,就是HandlerAdapters要做的事情
HandlerExceptionResolvers
异常处理器,其它组件在工作的过程中难免会出现问题,HandlerExceptionResolvers就负责对异常情况进行处理
具体来说,就是根据异常设置ModelAndView,之后再交给render方法进行渲染
RequestToViewNameTranslator
视图名称解析器,有的Handler处理完后并没有设置View也没有设置ViewName,这时就需要从request获取ViewName了,RequestToViewNameTranslator负责从request中获取ViewName
ViewResolvers
页面渲染处理器,用来将String类型的视图名和Locale解析为View类型的视图
View是用来渲染页面的,也就是将程序返回的参数填入模板里生成html(也可能是其它类型)文件
ViewResolver需要找到渲染的模板和所用的技术(也就是视图的类型)进行渲染,具体渲染过程则交给不同的视图自己完成
FlashMapManager
参数传递管理器,用来管理FlashMap的
FlashMap主要用在redirect重定向中传递参数