目次へ

17.4. アプリケーションのモジュール化

Web アプリケーションを作成する際、一般ユーザの画面と管理者の画面を別々に提供する場合が多々あります。そういった際に Struts では一般ユーザ画面と管理者画面をそれぞれ 1つのモジュールとして取り出す、つまりモジュール化することができます。モジュール化を行うにはまず web.xml の設定が必要です。以下の例はデフォルトモジュールに管理者用の admin モジュール を追加したものです。

<web-app>
  ...
  <servlet>
    <servlet-name>action</servlet-name>
    <servlet-class>org.apache.struts.action.ActionServlet</servlet-class>
    <init-param>
      <param-name>config</param-name>
      <param-value>/WEB-INF/struts-config.xml</param-value>
    </init-param>
    <init-param>
      <param-name>config/admin</param-name>
      <param-value>/WEB-INF/struts-config-admin.xml</param-value>
    </init-param>
    <load-on-startup>1</load-on-startup>
  </servlet>
  ...
</web-app>

ActionServlet を設定している servlet 要素の初期化パラメータのパラメータ名に

config/[モジュール名]

とします。設定したモジュール名はモジュールにアクセスする際の URI の一部になります。たとえば、デフォルトモジュールにアクセスする際の URI が http://localhost:8080/webapp/index.do のとき、admin モジュールにアクセスする際の URI は http://localhost:8080/webapp/admin/index.do のようになります。

モジュールを切り替える方法は 2つあります。1つは org.apache.struts.actions.SwitchAction を使用する方法、もう 1つはフォワードを使用する方法です。

SwitchAction を使用する場合は Struts 設定ファイルに以下のような設定を行います。

<action-mappings>
  <action path="/switchAdmin"
          type="org.apache.struts.actions.SwitchAction" />
</action-mappings>

action 要素の type 属性に SwitchAction を完全限定名で指定します。モジュールを切り替える際には SwitchAction が呼び出す際に、以下のパラメータを付加する必要があります。

リクエストパラメータ 説明
prefix スイッチするモジュール名をスラッシュ付きで指定します。デフォルトモジュールにスイッチする場合は空文字列を指定します。
page 制御をフォワードする URI をモジュールのルートからの絶対パスで指定します。

たとえば、admin モジュールの index.do を呼び出すには以下のような URI を使用します。

http://localhost:8080/webapp/switchAdmin.do?prefix=/admin&page=/index.do

次にフォワードを使用する方法です。フォワードを使用する場合は Struts 設定ファイルに設定するだけです。

<action-mappings>
  <action path="/toAdmin"
          type="sample.SwitchModuleAction">
    <forward name="success"
             contextRelative="true"
             path="/admin/index.do" />
  </action>
</action-mappings>

contextRelative 属性に true を指定し、path 属性にモジュールを含んだパスを指定します。global-forward でも同様にすることが可能です。

実習課題 4

以下の Web アプリケーションを、Struts を用いて作成しなさい。

  • 任意のモジュールを追加すること
  • SwitchAction とフォワードを使用してモジュールを切り替えられるようにすること

解答例はこちら

↑このページの先頭へ

こちらもチェック!

PR
  • XMLDB.jp