1 HandlerMapping(处理映射器)
HandlerMapping本身是用来查找handler的也就是处理器。具体的表现形式可以是类或者方法。比如在实际开发过程中controller中进行标注的@RequestMapping的作用便是找到响应的处理器handler和intercepter.
2 HandlerAdapter(处理器适配器)
HandlerAdapter是一个适配器。因为SpringMVC中的handler可以是任意形式的。只要能处理请求即可。但是把请求交给servlert的时候,由于Servlet的方法本身都是doService(HTTPServletRequest
request,HttpServletResponse
response)的形式,要让固定的Servlet处理方调用Handler来进行处理,便是HandlerAdapter的职责。
3 HandlerExceptionReSlover
HandlerExceptionReSlover用于处理Handler处理产生的异常情况。它的作用是根据异常的设置ModelAndView,之后交给渲染方法进行渲染。渲染方法会根据ModelAndView来渲染成实际的页面。
4 ViewReslover
用于将String类型的页面名称和Locale解析为view类型的视图。只有一个resolveViewName()方法,从方法名称可以看出controller返回String类型的视图名称,然后由viewName最终会被解析成真正的视图。View是用来渲染页面的,最终会将程序返回的参数和数据进行模板填充。最终生成视图文件(html),
viewReSlove主要做了两件事:
- (1) 找到渲染所用的模板和所用的技术。
- (2)找到视图类型并且进行填充数据(如JSP等),在默认情况下SpringMVC会进行默认配置InternalReSourceViewResolver(针对JSP)。
配置:
SpringMVC对于三大件默认在底层已经进行了注册和使用(三大件已经存在于SpringMVC的运行机制中),默认使用的三大件已经过时了(虽然过时,但是依然能够保证程序运行的),建议我们使用更好更合适的三大件,只需要在SpringMVC的配置文件中添加一个标签<mvc:annotation-driven>
,配置完成后会自动注册最合适的三大件。
实际应用: