Spring MVCアプリケーションでは、

MultiActionController

は関連するアクションを1つのコントローラにグループ化するために使用され、メソッドハンドラは以下のシグニチャに従わなければなりません:

    public (ModelAndView | Map | String | void) actionName(
        HttpServletRequest, HttpServletResponse[,HttpSession][,CommandObject]);

1. MultiActionController

MultiActionControllerの例を参照してください。

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");

    }

}

<beans ...>

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

  <bean class="com.mkyong.common.controller.CustomerController"/>

</beans>

2.マッピングの例

ここでreuqested URLは、次のパターンのメソッド名にマップされます。



  1. 顧客


    コントローラ – >

    /顧客/

    **

  2. /customer/

    add

    .htm – >

    add()

  3. /customer/

    delete

    .htm – >

    delete()

  4. /customer/

    update

    .htm – >

    update()

  5. /customer/

    list

    .htm – >

    list()

3. InternalPathMethodNameResolver

InternalPathMethodNameResolverは、URLをメソッド名にマップするデフォルトの

MultiActionController

実装です。ただし、メソッド名に接頭辞または接尾辞を追加することはできます。

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

URLは次のパターンでメソッド名にマップされます:



  1. 顧客


    コントローラ – >

    /顧客/

    **

  2. /customer/

    add

    .htm – > test


    add


    Customer()

  3. /customer/

    delete

    .htm – >テスト


    削除


    顧客()

  4. /customer/

    update

    .htm – >テスト


    アップデート


    顧客()

  5. /customer/

    list

    .htm – > test


    list Customer()

注意注釈を使用すると、MultiActionControllerの設定がより簡単になります。詳細については、このリンクを参照してください。//spring-mvc/spring-mvc-multiactioncontroller-annotation-example/[MultiActionController注釈の例]

ソースコードをダウンロードする

ダウンロードする –

SpringMVC-MultiActionController-Example.zip

(7KB)