[CONTENTSへ戻る]

サンプルその5(MultiActionController)

今までのサンプルでは一つのURLに対して一つのコントローラを割り当ててきた。
MultiActionControllerでは複数のURLを一つのコントローラの各対応するメソッドに割り当てることが出来る。
このコントローラを使用してサンプルを作成してみる。
サンプルとして、メニュー画面の項目2と項目3をクリックした際の処理を
このMultiActionControllerで行ってみる。

urlやコントローラ名などを以下のように決めておく。

コントローラ名multiTestControllerMultiActionControllerを継承したコントローラ
コントローラクラスcom.ziqoo.web.controller.MultiTestController
JSPファイルWEB-INF/jsp/multiTest.jsp処理結果を表示する画面
urlメソッド名備考
/item2.htmexec2項目2に対応
/item3.htmexec3項目3に対応

コントローラの作成

MultiTestControllerクラスを作成する。
MultiActionControllerを継承し、メソッドexec2とexec3を実装する。
処理内容はそれぞれ
"項目2がクリックされました。"
"項目3がクリックされました。"
と表示するだけにしておく。

WEB-INF/src/com/ziqoo/web/controller/MultiTestController.java
package com.ziqoo.web.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 MultiTestController extends MultiActionController {

	public ModelAndView exec2(HttpServletRequest req, HttpServletResponse res) throws Exception {
		return new ModelAndView("multiTest", "message", "項目2がクリックされました。");
	}

	public ModelAndView exec3(HttpServletRequest req, HttpServletResponse res) throws Exception {
		return new ModelAndView("multiTest", "message", "項目3がクリックされました。");
	}
}

JSPファイルの作成

結果を表示するmultiTest.jspの内容は以下のとおり。

WEB-INF/jsp/multiTest.jsp
<%@page pageEncoding="Shift_JIS" contentType="text/html; charset=Shift_JIS" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jstl/core" %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">

<html>
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=Shift_JIS">
    <link rel="stylesheet" type="text/css" href="css/main.css" />
    <title>springapp</title>
</head>
<body>
    <h3>MultiActionControllerのテスト</h3>
    <hr>
    
    <ul>
        <li><c:out value="${message}"/></a>
    </ul>
    
    <hr>
    <a href="<c:url value="menu.htm"/>">メニュー</a> 
</body>
</html>

設定ファイルの修正

URLに対するメソッドのマッピングはPropertiesMethodNameResolverクラスを使用する。
その為の設定をspringapp-servlet.xmlファイルに追記する。

WEB-INF/springapp-servlet.xml
   --- 省略 ---
    <bean id="methodNameResolve" class="org.springframework.web.servlet.mvc.multiaction.PropertiesMethodNameResolver">
        <property name="mappings">
            <props>
                <prop key="/item2.htm">exec2</prop>
                <prop key="/item3.htm">exec3</prop>
            </props>
        </property>
    </bean>
   --- 省略 ---

さらにコントローラクラスとコントローラに対するURLマッピングも追記する。

WEB-INF/springapp-servlet.xml
   --- 省略 ---
    <bean id="multiTestController" class="com.ziqoo.web.controller.MultiTestController">
        <property name="methodNameResolver">
            <ref bean="methodNameResolve" />
        </property>
    </bean>

    <bean id="urlMapping" class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping">
        <property name="mappings">
            <props>
                <prop key="/menu.htm">menuController</prop>
                <prop key="/productSearch.htm">productSearchController</prop>
                <prop key="/productList.htm">productListController</prop>
                <prop key="/productDetail.htm">productDetailController</prop>
                <prop key="/item2.htm">multiTestController</prop>
                <prop key="/item3.htm">multiTestController</prop>
            </props>
        </property>
    </bean>
   --- 省略 ---

動作確認

メニュー画面から、項目2をクリックする。

"項目2がクリックされました。"と表示される。

同様に項目3をクリックすると
"項目3がクリックされました。"と表示される。


[CONTENTSへ戻る]