Spring MVC XmlViewResolver example

In Spring MVC, XmlViewResolver is used to resolve “view name” based on view beans in the XML file. By default, XmlViewResolver will loads the view beans from /WEB-INF/views.xml, however, this location can be overridden through the “location” property :


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

In above case, it loads the view beans from “/WEB-INF/spring-views.xml“. See XmlViewResolver example :

1. Controller

A controller class, returns a view, named “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

Register the XmlViewResolver in the Spring’s bean configuration file, loads the view beans from “/WEB-INF/spring-views.xml“.


<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" />
	
	<!-- Register the bean -->
	<bean class="com.mkyong.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. View beans

The “view bean” is just a normal Spring bean declared in the Spring’s bean configuration file, where

  1. id” is the “view name” to resolve.
  2. class” is the type of the view.
  3. url” property is the view’s url location.

File : spring-views.xml


<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/pages/WelcomePage.jsp" />
	</bean>

</beans>
How it works ?
When a view name “WelcomPage” is returned by controller, the XmlViewResolver will find the bean id “WelcomPage” in “spring-views.xml” file, and return the corresponds view’s URL “/WEB-INF/pages/WelcomPage.jsp” back to the DispatcherServlet.

Download Source Code

Reference

  1. XmlViewResolver documentation

mkyong

Founder of Mkyong.com, passionate Java and open-source technologies. If you enjoy my tutorials, consider making a donation to these charities.

7 Comments
Most Voted
Newest Oldest
Inline Feedbacks
View all comments
aji
7 years ago

i see in in spring-views.xml, the class value is JstlView,
is it always filled with JstView when i want to register another view url?

MohanRao
9 years ago

I think all these are related 2.5 version, kindly update them to 4.* version

Rahman
12 years ago

Thank You very much for such great videos

Aditya
13 years ago

Hello,

Can we have more than 1 location or view file for XmlViewResolver.
If not can we create 2 beans of XmlViewResolver.

Thank You
Aditya

Chintan Patel
14 years ago

Hello,
There is a spelling mistake in below line

In Spring MVC, XmlViewResolver is used to resolve “view anme” based

on your
https://mkyong.com/spring-mvc/spring-mvc-xmlviewresolver-example/
post

Good posts

srinivasarao gurram
13 years ago
Reply to  mkyong

one can call the application using following URML.
http://localhost:8080/SpringMVC/welcomepage.htm