Spring MVC MultiActionController example
In Spring MVC application, MultiActionController is used to group related actions into a single controller, the method handler have to follow below signature :
public (ModelAndView | Map | String | void) actionName( HttpServletRequest, HttpServletResponse [,HttpSession] [,CommandObject]);
1. MultiActionController
See a MultiActionController example.
package com.mkyong.common.controller; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.springframework.web.servlet.ModelAndView; import org.springframework.web.servlet.mvc.multiaction.MultiActionController; public class CustomerController extends MultiActionController{ public ModelAndView add(HttpServletRequest request, HttpServletResponse response) throws Exception { return new ModelAndView("CustomerPage", "msg","add() method"); } public ModelAndView delete(HttpServletRequest request, HttpServletResponse response) throws Exception { return new ModelAndView("CustomerPage", "msg","delete() method"); } public ModelAndView update(HttpServletRequest request, HttpServletResponse response) throws Exception { return new ModelAndView("CustomerPage", "msg","update() method"); } public ModelAndView list(HttpServletRequest request, HttpServletResponse response) throws Exception { return new ModelAndView("CustomerPage", "msg","list() method"); } }
With ControllerClassNameHandlerMapping configured.
<beans ...> <bean class="org.springframework.web.servlet.mvc.support.ControllerClassNameHandlerMapping" /> <bean class="com.mkyong.common.controller.CustomerController" /> </beans>
2. Mapping Examples
Now, the reuqested URL will map to the method name in the following patterns :
- CustomerController –> /customer/*
- /customer/add.htm –> add()
- /customer/delete.htm –> delete()
- /customer/update.htm –> update()
- /customer/list.htm –> list()
3. InternalPathMethodNameResolver
The InternalPathMethodNameResolver is the default MultiActionController implementation to map URL to method name. But, you are still allow to add prefix or suffix to the method name :
<beans ...> <bean class="org.springframework.web.servlet.mvc.support.ControllerClassNameHandlerMapping" /> <bean class="com.mkyong.common.controller.CustomerController"> <property name="methodNameResolver"> <bean class="org.springframework.web.servlet.mvc.multiaction.InternalPathMethodNameResolver"> <property name="prefix" value="test" /> <property name="suffix" value="Customer" /> </bean> </property> </bean> </beans>
Now, the URL will map to the method name in the following pattern :
- CustomerController –> /customer/*
- /customer/add.htm –> testaddCustomer()
- /customer/delete.htm –> testdeleteCustomer()
- /customer/update.htm –> testupdateCustomer()
- /customer/list.htm –> testlistCustomer()
Note
With annotation, the MultiActionController is more easy to configure, visit this MultiActionController annotation example for detail.
With annotation, the MultiActionController is more easy to configure, visit this MultiActionController annotation example for detail.
Download Source Code
Download it – SpringMVC-MultiActionController-Example.zip (7KB)
References
Tags : spring mvc

Very good example.
Hi Mkyong,
First Thanks to u.This site is very useful for me,i had one query
can u please share the how to upload the video file in spring,can u please give me one example on that one.i really need that one.
Thanks,
Hi, maybe this will be helpful for somebody who will need dependencies in pom.xml:
Ivo.
thakzzzzz You very much, this was very useful to me …… thank u agein
I am getting 404 page not found error when trying to use the following URL,
http://localhost:8080/SpringMultiActionEx/customer/add.htm
Please advise.
How to fetch the form data in this example