美文网首页
Spring MVC MultiActionController

Spring MVC MultiActionController

作者: lovePython | 来源:发表于2015-08-19 17:15 被阅读115次

    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()

    相关文章

      网友评论

          本文标题:Spring MVC MultiActionController

          本文链接:https://www.haomeiwen.com/subject/ttlgqttx.html