こんにちは!システムインテグレーション部の大嶋です!

昨年、私は新人向けに勉強会を開きました。

今回は、その際の内容をこのブログに記載したいと思います。

ちなみに勉強会の題目ですが、【StrutsとSAStrutsの特徴と違いについて】です!

Javaの代表的なフレームワークであるStrutsの特徴を理解し、そして、Strutsを改良したSAStrutsの特徴と比較する事で、二つのフレームワークの違いを知ってもらおうと勉強会を開催いたしました。

以下は、私が2つのFWでアプリケーションの開発しながら実感したことを書いています。

最初に、Struts(Apache Struts)とは、MVCモデルに基づいた、JavaサーブレットやJSPを組み合わせ、アプリケーションを構築する際に必要となる、諸機能を提供するフレームワークであり、設定ファイル(struts-config.xml)に定義することにより、画面遷移、言語切り替え、入力チェックなどが行えます。

Struts特徴1は、アプリケーション構成です。

サーブレットから設定ファイル(struts-config.xml)に指定されたアクションクラスを呼び出し、アクションクラスの実行結果により、画面表示を決める事ができます。

大嶋_ブログ掲載資料_201300918_1

クラインからの呼び出しをアクションサーブレットが受け取り、設定ファイルにマッピングされたアクションクラスで処理を行います。入力値や処理結果をアクションフォームクラスに詰めてビューに表示します。

Struts設定ファイル(struts-config.xml)がアプリケーション起動時に読み込まれます。

クライアントからのリクエストはActionServletが受け取り、リクエストの処理をRequestProcessorに委託します。

RequestProcessorはリクエストに応じて設定ファイルに定義されている適切なActionMapping・ActionFormオブジェクトを作成し、Actionクラスのオブジェクトのexcuteメソッドを呼び出します。

RequestProcessorは処理結果を表示するのに適切なJSPファイルを選びます。JSPファイルは、処理結果をクライアントに返します。

アプリケーション構成で実感したのは、「JspではAction名のみを定義し、Action名に紐付いた遷移先を設定ファイル(struts-config.xml)で管理しているため、遷移先を修正する際に、JSPを変更する必要がない」という事です

大嶋_ブログ掲載資料_201300918_2

大嶋_ブログ掲載資料_201300918_3

画面遷移先を設定ファイル(struts-config.xml)で管理します。

Struts特徴2は、表示メッセージの管理です。

メッセージリソースファイルの設定により、複数の言語に対応する画面を作成することができます。

設定ファイルとフォルダ構成です。

大嶋_ブログ掲載資料_201300918_4

言語毎に 各画面項目、エラーメッセージなのを定義したapplication.properties (日本語用「application.properties」、英語用「application_en.properties」など)を用意し 設定ファイル(struts-config.xml)で切り替えることで、 言語毎にJSPを用意するのではなく、1つのJSPで多言語化することができる。 ファイル名の次に、“_”と言語名を記載します。

メッセージ表示で実感したのは、「JSPやJavaソースコードに手を加えることなく、1つのJSPで多言語に対応したページを作成できる」という事です。

大嶋_ブログ掲載資料_201300918_5

メッセージリソースファイルのファイル名にロケールを指定すると、ブラウザに設定されている言語に合わせたメッセージリソースファイルが使用されるため、一つのjspファイルで複数言語の対応をすることができます。

大嶋_ブログ掲載資料_201300918_6

ブラウザに設定されている言語のメッセージリソースファイルがない場合、デフォルトのメッセージリソースファイルが使用されます。

Struts特徴3は、バリデーション設定です。

ユーザからのリクエストをサーブレットが受け取り、受け取った内容をアクションフォ-ムに取り込み、validationの指定により入力チェックができます。

大嶋_ブログ掲載資料_201300918_7

バリデーション設定で実感したのは、「設定ファイルにアクションフォ-ムを指定し、アクションフォームで入力値や結果値のデータの整合性等を確認する事ができる」という事です。

大嶋_ブログ掲載資料_201300918_7_5

大嶋_ブログ掲載資料_201300918_8

入力チェックを定義したフォ-ム定義ファイルの作成(validation.xml)を作成し 設定ファイル(struts-config.xml)でアクションフォームを指定し アクションフォームで入力値や結果値のデータの整合性等を確認する事ができます。

検証ルールを適用するフォ-ム定義ファイルの作成(validation.xml) →設定ファイル(struts-config.xml)でアクションフォームを指定 →アクションフォームの定義

ここまでが、Strutsの特徴になります。

次に、SAStruts(Super Agile Struts)とは、Strutsを使った開発をSuper Agileに行なうためのフレームワーク。Super Agileとは、スクリプト言語が持つAgileと型の強い言語の良さをあわせもつ、スクリプト言語(Agile)の良さを超える(Super)なフレームワークです。

SAStruts特徴1は、アプリケーション構成です。

規定に従ったアクションクラスの配置と命名の規則により、画面からアクションクラスを呼び出すことができます。

アプリケーション構成で実感したのは、「アクションクラスの配置と命名を規定と合わせる事で設定ファイルを記述する必要がない」という事です。

大嶋_ブログ掲載資料_201300918_9

SAStruts特徴2は、アノテーション活用です。

画面からの入力値を受け取る変数領域(フォームクラス)の指定をアノテーションとしてソースファイルに設定を記述することができます。

大嶋_ブログ掲載資料_201300918_10

画面からの入力値を受け取る変数領域(フォームクラス)の指定を、 アノテーションとしてソースファイルに設定を記述することができます。

アノテーション活用で実感したのは、「アノテーションによりフォ-ムクラスを定義する事ができ、画面からのアクションクラスのメソッド呼び出しができる」という事です。

大嶋_ブログ掲載資料_201300918_11

SAStruts特徴3は、ホットデプロイです。

プログラム修正時のサーブレットコンテナ再起動はしなくてもよく、クラスを置き換え後に、デプロイをしなくても、リクエスト毎にクラスローダがデプロイします。

ホットデプロイで実感したのは、「ホットデプロイ機能により、クラスファイルの設定変更時にサーブレットコンテナは再起動しなくても良い」ということです。

2つのFWの特徴を比較した一覧です。アプリケーションを実装する際、DB接続ミドルウェアをStrutsは、JDBCを活用し、SAStrutsは、S2JDBCを活用しました。

大嶋_ブログ掲載資料_201300918_12

ここまで、読んで頂いてありがとうございました。最後にまとめです。

2つのFWの差異

・設定ファイル(struts-config.xml)に記入する内容が少なくなり、設定ファイルを意識しなくても開発ができる様になった。

・アノテーションテーションを利用し、メタデータを注記する事で、データアクセスやメソッドアクセスが便利になった。

参考した書籍やサイトの一覧です。

題目

参考

Struts 特徴1

http://ja.wikipedia.org/wiki/Apache_Struts

Struts 特徴2

Javaによる自作CMS Tomcat+Struts+MySQLで作るWebアプリケーション(著者:田中宏和)

Struts 特徴3

http://ja.wikipedia.org/wiki/Apache_Struts

SAStrutsとは

http://sastruts.seasar.org/

SAStruts特徴1

http://sastruts.seasar.org/featureReference.html#ActionForm

SAStruts特徴2

http://sastruts.seasar.org/annotationReference.html#Execute

SAStruts特徴3

http://www.atmarkit.co.jp/fjava/rensai4/saweb03/saweb03_1.html

実装したアプリケーションのER図です。

大嶋_ブログ掲載資料_201300918_13

Javaの代表的なFWを比較する事で、よりFWについて理解が深まれば幸いです。