Apache Struts

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

もう一度検索

【記事の利用について】

タイトルと記事文章は、記事のあるページにリンクを張っていただければ、無料で利用できます。
※画像は、利用できませんのでご注意ください。

【リンクついて】

リンクフリーです。