Struts2を見る。

最近、初めてStruts2のソースを見てみました。

Struts1.2.9以降は触ったことがなかったのですが、Struts2.0.11を見てみたらおもいっきり変わっていました。
で、かなり好きな感じみたいです。


まだ、あんまり見てないですが、特に好きなところはこんなところ。

  • ActionクラスがPOJOで実装OK。いままでみたいにActionクラスの継承とかしなくてよくなる。
  • Actionクラスがリクエスト単位で生成される。いままでみたいにリクエスト単位でスレッド制御されるものとは違うから、インスタンス変数保持OK。
  • リクエスト単位の共通処理などはインターセプターで構成しやすいように設計されている。
  • 設定ファイル、メッセージリソースファイル、validationなどは、該当するパッケージ、クラスと同じディレクトリに置いておけば勝手に対応してくれる。


Actionクラスがスレッドセーフで作成しなくて済むので、Actionはインスタンス変数保持OKで、以前の「Action + ActionForm」みたいな役割にできます。
また、ActionクラスがPOJOで実装OKということで、HttpServletRequestとかを引数とするStruts1.xのexecuteみたいなメソッドも不要なので、JUnitでのテストもすごく簡単になりますね。

なんか、Springのサンプル「petclinic」とかの実装みたいに作っていけばいいんですね。
DIとかが出てきてJavaも難しくなったな〜と思っていたのですが、みんな同じような方向を目指して発展してるようで安心しました。


以下のところでデモを動かしながらソースを見るといいかも。なんの設定もいりません。
http://www.planetstruts.org/struts2-showcase/showcase.actionで、Struts2に入ってるサンプルアプリ「showcase」のデモが触れます。
Welcome to the Apache Struts projectの「Download Now」から、サンプルアプリ「showcase」のソースコードがダウンロードできます。


ま、せっかくソースをダウンロードしたら、Maven2さえインストールすれば、1コマンドで「showcase」のアプリがローカルで動くのでやってみましょう。

  1. MavenとeclipseとjettyでWEBアプリ作成環境を作るを見ながら、Maven2をダウンロードして、環境変数設定を行う。
  2. 「showcase」のディレクトリにコマンドプロンプトで移動して以下のコマンド1発。
mvn jetty:run

これだけで勝手に以下のことをしてくれて動いちゃいます。

  1. 必要なjarファイルのダウンロード
  2. ソースのコンパイル、パッケージング
  3. アプリケーションサーバー起動

便利ですね〜。

あとは、ブラウザで 「http://localhost:8080/struts2-showcase」にアクセスして、以下の画面が表示されたらOK。