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 とフォワードを使用してモジュールを切り替えられるようにすること