SpringMVCDispatcherServlet不但可以接受多个HandlerMapping以处理Web请求到具体Handler的映射,也可以接受配置多个ViewResolver用于处理多视图。
其原理是,DispatcherServlet在初始化时,根据类型扫描自己的WebApplicationContext中定义的 ViewResolver。如果查找到存在多个ViewResolver的定义,DispatcherServlet根据多个ViewResolver 的优先级进行排序,然后将按照排序后的顺序遍历这些ViewResolver。
如sprint-mvc.xml的配置如下:
Order属性不可缺少,因为ViewResolver的优先级的指定使用Ordered接口作为标准,这是Spring框架优先级判定的惯例。这里我们希望主要使用VelocyViewResolver进行逻辑视图名到具体View实例的查找,如果没能找到,再通过 InternalResourceViewResolver查找。
velocity.properties配置文件,位置要与spring-mvc.xml中配置的一样。