Apache Strutsは、
Apacheソフトウェア財団が開発する、オープンソースの
Java Webアプリケーションフレームワークです。このフレームワークは、Webアプリケーション開発を効率化するための基盤を提供します。
概要
Strutsは元々、クレイグ・マクラナハン氏によって作成され、
2000年5月に
Apacheソフトウェア財団に寄贈されました。当初はJakarta Projectの一部として「Jakarta Struts」と呼ばれていましたが、
2005年にApacheのトップレベルプロジェクトに昇格しました。
Strutsは、
Apache Tomcatなどのサーブレットコンテナ上で動作します。初期のStruts1はサーブレットとJSPによる開発環境で広く利用され、
2005年頃には
Java Webフレームワークの
デファクトスタンダードと見なされていました。しかし、技術の進歩と共にその欠点も指摘されるようになり、
2007年にリリースされたStruts2では、それまでのアーキテクチャを刷新し、WebWork2をベースとした新しいフレームワークへと進化しました。
Strutsフレームワークは、Model View Controller(MVC)アーキテクチャを採用しています。これは、アプリケーションをデータ処理(Model)、ユーザーインターフェース(View)、および制御(Controller)の3つの部分に分割する設計パターンです。類似のフレームワークとして、JSF(
JavaServer Faces)やSpring MVCフレームワークが挙げられます。
Strutsは、韓国の行政機関や地方自治体のサイトでも使用されているほか、日本国内でも多くのサイトで利用されています。
Struts1の特徴
Struts1では、JSPカスタムタグの利用によって、
JavaコードをJSPファイルから分離することが可能となり、従来のJSPのようにHTMLタグ内に
Javaコードを混在させる必要がなくなり、コードの可読性と保守性が向上しました。
主なStrutsのタグライブラリには、以下のようなものがあります。
HTML: HTMLフォームの構築に使用されます。
Logic: 条件分岐や繰り返しなどの制御ロジックを提供します。
Beans: Modelで定義されたJavaBeansにアクセスする機能を提供します。
Nested: 属性名の記述を省略できます。
Tiles: 複数のJSPで利用する記述を共通化するテンプレート機能を提供します。
また、Struts1にはActionServletがあり、設定ファイル(struts-config.xml)を編集することで、画面遷移を容易にコントロールできました。さらに、Validator機能も搭載されており、設定ファイル(validator-rules.xml)を変更することで、入力チェックの仕様を簡単に変更できました。入力されたデータは、一旦アクションフォームと呼ばれるBeansに格納されていました。
Struts1の最終リリースは2008年10月4日の1.3.10で、2013年4月5日にサポートが終了しました。しかし、2014年現在でもStruts1を使用しているサイトが多く存在し、同年の4月には深刻な脆弱性も発見されています。
Struts2の特徴
Struts2では、Struts1と比較して以下のような改善が施されています。
アノテーションや規約による設定ファイルの削減
依存性の注入(DI)
POJO (Plain Old
Java Object) のサポート
さらに、OGNL(Object-Graph Navigation Language)と呼ばれる式言語が搭載されており、動的なパラメータを扱うことが可能です。しかし、この機能にはセキュリティ上の脆弱性も多く指摘されており、その利便性と引き換えにセキュリティリスクが懸念されています。
Struts2には多くの
セキュリティホールが存在し、これらが悪用された事例が多数報告されています。以下はその一例です。
GMOペイメントゲートウェイ:クレジットカード番号36万件が流出。
JETRO:メールアドレス2万件が流出。
日本郵便:メールアドレス2万件が流出。
ぴあ:クレジットカード番号3万件が流出。
国土交通省土地総合情報システム:不動産取引価格アンケート回答4,335件、所有権移転登記情報194,834件が流出。
派生版
Strutsからは、いくつかの派生版も生まれています。
Super Agile Struts (SAStruts): Seasarプロジェクトが開発した、Struts1とSeasar2をベースにした高速開発を目指すフレームワークです。
TERASOLUNA Server Framwork for Java: NTTデータが開発した、Struts1、Spring、iBATISをベースにしたサーバサイドフレームワークです。
競合するMVCフレームワーク
Strutsは、ドキュメントが充実しており、普及しているフロントエンドフレームワークですが、軽量フレームワークとして、Spring MVC、Stripes、Apache Wicket、Play Framework、Apache Tapestryなどが存在します。
Strutsから派生したWebWorkフレームワークは、Strutsと同じアーキテクチャを維持しつつ強化と洗練を目指していましたが、StrutsとWebWorkは再び統合され、Struts2としてリリースされました。
その他のJavaベースのMVCフレームワークとしては、WebObjectsやGrailsなどがあります。
脚注
関連項目
JavaServer Faces (JSF)
WebWork
Spring Framework
外部リンク
Apache Struts (英語)
Super Agile Struts (SAStruts)
*
TERASOLUNA Server Framework for Java