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
- “id” is the “view name” to resolve.
- “class” is the type of the view.
- “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
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
Download it – SpringMVC-XmlViewResolver-Example.zip (7KB)
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?
I think all these are related 2.5 version, kindly update them to 4.* version
Thank You very much for such great videos
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
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
Article updated, thanks for your correction.
one can call the application using following URML.
http://localhost:8080/SpringMVC/welcomepage.htm