今週は雪の降る日が多く、少し冬らしい一週間でした。
社内では、Strutsについて学習をしました。
ひとつのアプリケーションを作成することによって、Strutsの概念が理解できたのではないかと思います。
とはいっても、基本的なことを抑えただけなのでこれからも精進してもらいたいです。
社内で学習するStrutsは1.x系なのですが、Strutsには現在1.x系と2.x系があります。
そこで、Struts 1.xとStruts 2.xとでは動作がどのように変わったのかを比較してみます。
Struts1.xの動作

- ①クライアントからのリクエストをアクションサーブレットが受け取る。
- ②アクションサーブレットは、受け取ったリクエストデータをアクションフォームBeanに格納する。
- ③アクションサーブレットはアクションクラス(ビジネスロジック)を呼び出す。
- ④アクションクラス内で、アクションフォームBeanを参照しながら、ビジネスロジックを実行する。
- ⑤アクションクラスでの処理が終了したら、処理結果状態を返す。
- ⑥アクションサーブレットはアクションクラスでの処理結果状態に応じたJSPを呼び出す。
- ⑦JSPはクライアントに返すレスポンス画面を生成する。
Struts2.xの動作

- ①クライアントからのリクエストはStruts 2が提供するDispatcher Filterが受け取る。
- ②Dispatcher FilterがInterceptor群を呼び出す。定義に従って様々なInterceptorが順に実行される。
- ③リクエストパラメータをアクションにセットするInterceptorによって、リクエストパラメータがアクションに伝播される。
アクションにはリクエストパラメータに対応する属性とそのセッタメソッドを定義しておく。 - ④アクションを実行するインターセプタによって、Webブラウザで発生したイベント(サブミットボタンやハイパーリンクのクリック)に対応したアクションのメソッドが呼び出される。
標準ではexecuteという名前のメソッドが呼ばれる。
業務ロジックの処理結果(検索結果など)は、アクション自身の属性として保持しておく。 - ⑤アクションでの業務ロジック処理が終了した場合、その次に実施する処理を指定し、戻り値としてインターセプタへ返す。
- ⑥アクションから指定された次の処理を実行する。
図はレスポンスを生成するためにJSPの実行を指定している例で、JSPの実行以外にも別のアクションを実行したり、リダイレクトレスポンスを生成させたりする事ができる。 - ⑦⑤でアクションが保持している業務ロジックの結果データを、Struts 2が提供しているカスタムタグを利用して参照する。
- ⑧JSPによって生成されたHTMLがクライアントへ返される。
上記のように、Struts 1.xとStruts 2.xは異なるアーキテクチャとAPI、機能を提供する別のWebアプリケーションフレームワークになっています。よって、Struts 1.xのアプリケーションを、ライブラリの置き換えと簡単な修正のみでStruts 2.xアプリケーションに単純にバージョンアップする事はできませんので気をつけて下さい。
以上、今週の育成現場便りでした。
■[育成現場便り]内の前後の記事
↑ 今週の育成現場便り(2/12~2/15)
→ 今週の育成現場便り(2/4~2/8)
↓ 今週の育成現場便り(1/28~2/1)
■更新日時での前後の記事
↑ #9 助っ人
→ 今週の育成現場便り(2/4~2/8)
↓ 2月8日 お天気
