Spring MVC視圖解析器:Spring MVC XmlViewResolver示例


在Spring MVC中,使用XmlViewResolver基於XML文件中的視圖bean來解析“視圖名稱”。默認地,XmlViewResolver將從/WEB-INF/views.xml中加載視圖bean,不過,這個位置可以通過“location”屬性覆蓋:

<beans ...>
         <bean class="org.springframework.web.servlet.view.XmlViewResolver">
              <property name="location">
                       <value>/WEB-INF/spring-views.xml</value>
              </property>
         </bean>
</beans>

在上面這個例子中,它從“/WEB-INF/spring-views.xml”加載視圖bean。請看下面的XmlViewResolver示例。

1.  Controller控制器

一個控制器類WelcomeController.java,返回一個名為“WelcomePage”的視圖。

//...
public class WelcomeController extends AbstractController{

         @Override
         protected ModelAndView handleRequestInternal(HttpServletRequest request,
                   HttpServletResponse response) throws Exception {

                   ModelAndView model = new ModelAndView("WelcomePage");

                   return model;
         }

}

2.  XmlViewResolver視圖解析器

在Spring的bean配置文件中,注冊XmlViewResolver視圖解析器,從“/WEB-INF/spring-views.xml”加載視圖bean。

<beans xmlns="http://www.springframework.org/schema/beans"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://www.springframework.org/schema/beans
         http://www.springframework.org/schema/beans/spring-beans-2.5.xsd">

    <bean class="org.springframework.web.servlet.mvc.support.ControllerClassNameHandlerMapping" />

         <!--注冊bean -->
         <bean class="cn.xuejava.common.controller.WelcomeController" />

         <bean class="org.springframework.web.servlet.view.XmlViewResolver" >
              <property name="location">
                  <value>/WEB-INF/spring-views.xml</value>
              </property>
     </bean>

</beans>

3.  視圖bean

視圖bean就是一個普通的Spring bean,在Spring bean配置文件中聲明。其中:

(1)“id”是要解析的視圖名稱

(2)“class”是視圖的類型

(3)“url”屬性是視圖的url位置

文件:spring-views.xml

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xsi:schemaLocation="http://www.springframework.org/schema/beans
        http://www.springframework.org/schema/beans/spring-beans-2.5.xsd">

    <bean id="WelcomePage"
          class="org.springframework.web.servlet.view.JstlView">
        <property name="url" value="/WEB-INF/jsp/WelcomePage.jsp" />
    </bean>

</beans>

解析過程:

當控制器返回一個名為“WelcomePage”的視圖時,XmlViewResolver將在“spring-views.xml”文件中查找id為“WelcomePage”的bean,並返回相對應的視圖URL“/WEB-INF/jsp/WelcomePage.jsp”給DispatcherServlet。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM