(1)Spring实现ViewResolver的非抽象类且我们经常使用的viewResolver有以下四种:
InternalResourceViewResolver | 将逻辑视图名字解析为bean的Name属性,从而根据name属性,找定义View的bean |
BeanNameViewResolver | 将逻辑视图名字解析为一个路径 |
ResourceBundleResolver | 和BeanNameViewResolver一样,只不过定义的view-bean都在一个properties文件中,用这个类进行加载这个properties文件 |
XmlViewResolver | 和ResourceBundleResolver一样,只不过定义的view-bean在一个xml文件中,用这个类来加载xml文件 |
(2) 用 handler mapping 可以映射请求到合适的 handler ,比如用 SimpleUrlHandlerMapping 或者 BeanNameUrlHandlerMapping 。
最基本的 HandlerMapping 提供的功能是 HandlerExecutionchain 的传递,必须包括请求匹配的处理器,也可能包括一系列应用于这个请求的的拦截器。
当请求发生时, DispatcherServlet 将请求递交给 hangler mapping, 让其检测请求并提出一个合适的 HandlerExecutionChain.DispatcherServlet 来执行该处理器和拦截器。
(3) spring mvc 的流程
请求的分发--------> 请求的处理---------> 视图的处理------->视图的渲染------>异常的处理
DispatcherServlet -----> HandlerMapping -----> ModelAndView -----> viewResolver ----->HandlerExceptionResolver接口resolveException(...)
继续总结......