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中配置的一樣。