| Apache/Jakarta編 |
|
Struts1.1より導入されたモジュール機能を使うと、Struts構成ファイル(struts-config.xml)を分割することができます。こうすることで、Struts構成ファイルの肥大化を防ぎ、アプリケーションを小さな単位に分けることができます。しかし、以下のような点で注意が必要です。
- Struts構成ファイル内のパスと実際のURLとの関係
- 「/do/*」のタイプのURLマッピングが使えない
- 別モジュールのリソースへアクセスする方法
- forward属性とForwardActionとの挙動の違い
ここでは、これらの注意点とその解決策について説明します。
■Struts構成ファイル内のパスと実際のURLとの関係
モジュールを用いた場合、Struts構成ファイルにて参照されるパスは、基本的にすべてモジュールからの相対パスとして扱われます。すなはち、モジュール「module」のStruts構成ファイルにて、
<action path="/myAction" ... > |
と定義されたアクションに対しては、
http://localhost:8080/context/module/myAction.do |
というURLでアクセスされることになります。そして、この場合転送先のJSPは「<Webアプリケーションのルートフォルダ>\module\myPage.jsp」になります。
こうした仕組みは、モジュールを別々のチームで開発している場合に、同名JSPなどの衝突を起こさない点で優れています。一方で、JSPをすべてWEB-INFフォルダ以下に置いている場合に厄介な問題が起こります。
「module」モジュールにて、次のような設定があるとします。このアクションへアクセスすると、先ほどと同じように「<Webアプリケーションのルートフォルダ>\module\WEB-INF\pages\myPage.jsp」を探してしまい、ページが見つからずエラーが発生してしまうのです。
<action path="/myAction" ... > |
この問題を解決するには、<forward>要素のcontextRelative属性を使い、パスをコンテキストからの相対にする必要があります。下記のように記述すると、正しいページを見つけることができようになります。
<action path="/myAction" ... > |
■「/do/*」のタイプのURLマッピングが使えない
モジュールを用いる場合は、Webアプリケーション配備記述子(web.xml)で定義されるアクションへのURLマッピングに、「/do/*」という形を用いることができません。たとえば、
http://localhost:8080/context/do/myAction |
などとしてアクションを起動していたときに、これを「module」モジュールに移したとすると、以下のいずれかの方法でアクションにアクセスできそうな気がします。
http://localhost:8080/context/do/module/myAction |
しかし、まず前者の方法だと、デフォルトモジュールに定義された「/module/myAction」アクションへのリクエストと解釈されてしまいます。また、後者の方法はそもそも「/do/*」というURLパターンにマッチしませんので、アクションサーブレットを起動することすらできません。
この制限は、Struts本家サイトのユーザガイドに明記されています。Webアプリケーション配備記述子とStrutsのそれぞれの仕様が原因で引き起こされる問題ですので、回避方法はありません。モジュールを利用したい場合は、「*.do」のように拡張子を使ったタイプのURLマッピングに切り替える必要があります。
| 「Java TIPS」 |
TechTargetジャパン
- Scalaのパッケージ、アクセス修飾子、オブジェクト継承 (2012/5/22)
インポート、パッケージオブジェクト、抽象クラス/抽象メソッド、オーバーライド、final、シールドクラスなども - 基幹系システムでCloud SQLは使えるか試してみた (2012/5/17)
サンプルとしてMRPシステムを作成して動かし、「再帰呼び出し」などのパフォーマンスを測定して検証してみます - アジャイル管理ツール9選+Pivotal Tracker入門 (2012/5/14)
群雄割拠のアジャイルプロジェクト管理ツールを9つ紹介し、特に注目を集めているPivotal Trackerの基本的な使い方を解説します - サーバサイドJSやJavaでWebアプリが作れるXPages (2012/5/11)
Notes/Dominoの資産をサーバサイドJavaScriptやJavaで操作し、HTMLやJavaScript、CSSをUIにできる技術を紹介
|
|
キャリアアップ
スポンサーからのお知らせ
- - PR -
イベントカレンダー
- - PR -
