Apache Struts

Apache Struts
Apache Strutsロゴ
開発元 Apacheソフトウェア財団
初版 2001年 (23年前) (2001)
最新版
6.4.0 / 2024年4月19日 (12日前) (2024-04-19) [1]
プログラミング
言語
Java
プラットフォーム クロスプラットフォーム
種別 Webアプリケーションフレームワーク
ライセンス Apache License 2.0
公式サイト struts.apache.org
テンプレートを表示

Apache Struts(アパッチ・ストラッツ)は、Apacheソフトウェア財団のApache Strutsプロジェクトにて開発されているオープンソースJava Webアプリケーションフレームワークである。

概要

元々はクレイグ・マクラナハン(英語版)の作成したソフトウェアであり、2000年5月にApacheソフトウェア財団に寄付された。当初はJakarta Projectに位置しており、Jakarta Struts(ジャカルタ・ストラッツ)と呼ばれていた。2005年にApacheのトップレベルプロジェクトに昇格した。

Apache Tomcatなどのサーブレットコンテナ上で動かすことができる。サーブレットJSPによる開発環境下に登場したStruts1は広く受け入れられ、2005年頃にはJava Webフレームワークのデファクトスタンダードと呼ばれるほどの普及を見せていた[2][3]。しかしソフトウェア技術の進歩とともに欠点も多く指摘されるようになり、2007年にリリースされたStruts2ではそれまでの仕組みを捨て、WebWork2として開発されていた別のフレームワークをベースとしたものへと置き換えられている[4]

フレームワークにはModel View Controllerアーキテクチャが適用されている。類似したフレークワークとしてJSF (Java Server Faces) や Spring MVCフレームワークがある。

韓国の行政機関・地方自治体のサイトの拡張子にも使用されている。日本でも使用されているサイトがある。

特徴 (Struts1)

整備されたJSPカスタムタグによってJavaコードはJSPファイルと分離され、従来のJSPのようにHTMLタグの中に<%%>で囲まれたスクリプトレットであるJavaソースコードを混在させる必要なく読みやすく洗練されたコーディングができるようになっていた。

主なStrutsのタグライブラリ

  • HTML
    HTMLのフォーム部分で利用する
  • Logic
    条件分岐や繰り返しなどの制御ロジックを提供
  • Beans
    Modelで定義されたJavaBeansにアクセスする機能を提供
  • Nested
    属性名の記述を省略可能にする
  • Tiles
    複数のJSPで利用する記述を共通化するテンプレート機能を提供

またStrutsでは ActionServlet が用意されており、画面の遷移をコントロールする設定ファイル (struts-config.xml) を変更するだけで容易に遷移先を変えることができる機能を提供していた。 アクションサーブレットでは画面で入力された内容を検査する Validator の機能が用意されており、設定ファイル (validator-rules.xml) を変更するだけで入力チェックの仕様を変更することが可能であった。入力チェックするデータは一旦アクションフォームと呼ばれるBeansに格納された。

最終リリースは2008年10月4日の1.3.10で、2013年4月5日にサポート終了を迎えた[5]2014年現在でも多くのサイトがStruts1を使用しているが[6]、同年4月には深刻な脆弱性も発見されている[7]

特徴 (Struts2)

WebWork」も参照

Struts2では、Struts1と比べて下記のような改善がなされている[4]

また、OGNL (Object-Graph Navigation Language) と呼ばれる式言語が搭載されており、これにより動的なパラメータを扱うことを可能としている[8]。一方、この機能ではたびたび深刻なセキュリティホールが発見されており、利便性の反面セキュリティ面の脆弱さも指摘されている[9]

セキュリティーホール

Struts2の多数のセキュリティーホールが攻撃対象になり、多数の被害を出している。

派生版

Super Agile Struts (SAStruts)
Seasarプロジェクトが公開している、Struts1と独自のDIコンテナである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フレームワークとして、WebObjectsGrailsもある。

脚注

  1. ^ “Announcements 2023”. 2023年6月19日閲覧。
  2. ^ “普及進む無償のフレームワーク「Struts」”. ITPro (2002年12月16日). 2011年11月26日閲覧。
  3. ^ “手を握るStrutsとSpring、今後の行方は”. マイナビニュース (2005年10月17日). 2011年11月26日閲覧。
  4. ^ a b “Struts2入門”. CodeZine (2008年3月21日). 2011年11月26日閲覧。
  5. ^ “Apache Struts 1 End-Of-Life (EOL) Press Release” (英語). Apacheソフトウェア財団 (2013年4月5日). 2014年2月20日閲覧。
  6. ^ “Apache Struts 2の脆弱性が、サポート終了のApache Struts 1にも影響~国内でいまだ大量稼働するStruts 1利用企業に、直ちに緩和策を~”. 株式会社ラック (2014年4月24日). 2014年6月15日閲覧。
  7. ^ “Apache Struts2 の脆弱性対策について”. 情報処理推進機構. 2014年5月2日閲覧。
  8. ^ “Struts 2.0 と OGNL”. IBM (2011年3月8日). 2014年4月24日閲覧。
  9. ^ “例えば、Strutsを避ける”. 株式会社ビットフォレスト (2014年4月23日). 2014年4月24日閲覧。
  10. ^ “不正アクセスに関するご報告と情報流出のお詫び” (PDF) (2017年3月10日). 2017年6月7日閲覧。
  11. ^ a b c 井上英明「日経 xTECH 猛威振るうStruts2脆弱性への攻撃、どうすれば防げたか」、日経BP社、2017年3月22日
  12. ^ “日本貿易振興機構 (JETRO)不正アクセスを受け情報漏洩の恐れ”. 2017年6月7日閲覧。
  13. ^ “Apache Struts 2の脆弱性で日本郵便のサイトにも不正アクセス、国際郵便用サービスの登録メールアドレス2万9116件、送り状1104件が流出”. 2017年6月7日閲覧。
  14. ^ “ぴあ、チケットサイトから個人情報15万件流出か カード情報も”. 2021年3月25日閲覧。
  15. ^ “「土地総合情報システム」における不正アクセスおよび情報流出の可能性について”. 2017年6月7日閲覧。

関連項目

外部リンク

ポータル FLOSS
  • Apache Struts (英語)
  • Super Agile Struts (SAStruts)
  • TERASOLUNA Server Framework for Java
トップレベル
プロジェクト
  • Accumulo(英語版)
  • ActiveMQ
  • Airflow
  • Ambari(英語版)
  • Ant
  • Aries(英語版)
  • Arrow(英語版)
  • Apache HTTP Server
  • APR
  • Avro(英語版)
  • Axis
  • Axis2
  • Beam
  • Bloodhound(英語版)
  • Brooklyn(英語版)
  • Buildr(英語版)
  • Calcite(英語版)
  • Camel(英語版)
  • Cassandra
  • Cayenne(英語版)
  • Chemistry(英語版)
  • CloudStack(英語版)
  • Cocoon
  • Cordova
  • CouchDB
  • cTAKES(英語版)
  • CXF(英語版)
  • Derby
  • Directory(英語版)
  • Drill
  • Druid(英語版)
  • Empire-db(英語版)
  • Felix(英語版)
  • Flex
  • Flink(英語版)
  • Flume(英語版)
  • FreeMaker(英語版)
  • Geronimo
  • Giraph(英語版)
  • Gump(英語版)
  • Hadoop
  • HBase
  • Helix(英語版)
  • Hive
  • Impala(英語版)
  • Jackrabbit(英語版)
  • James
  • Jena(英語版)
  • Jini(英語版)
  • JMeter(英語版)
  • Kafka
  • Kudu(英語版)
  • Kylin(英語版)
  • Lucene
  • Mahout
  • Maven
  • MINA(英語版)
  • mod_perl(英語版)
  • MyFaces(英語版)
  • NetBeans
  • Nutch(英語版)
  • NuttX(英語版)
  • OFBiz(英語版)
  • Oozie(英語版)
  • OpenEJB
  • OpenJPA
  • OpenNLP
  • OpenOffice
  • ORC(英語版)
  • PDFBox(英語版)
  • Parquet(英語版)
  • Phoenix(英語版)
  • POI
  • Pig(英語版)
  • Pinot(英語版)
  • Pivot
  • Qpid(英語版)
  • Roller
  • RocketMQ(英語版)
  • Samza(英語版)
  • ServiceMix(英語版)
  • Shiro(英語版)
  • SINGA(英語版)
  • Sling(英語版)
  • Solr
  • Spark
  • Storm(英語版)
  • SpamAssassin
  • Struts 1
  • Struts 2(英語版)
  • Subversion
  • Apache Superset
  • SystemDS(英語版)
  • Tapestry
  • Thrift
  • Tika(英語版)
  • Tomcat
  • Traffic Server(英語版)
  • Turbine(英語版)
  • UIMA(英語版)
  • Velocity
  • Wicket
  • Xalan
  • Xerces
  • XMLBeans
  • Yetus(英語版)
  • ZooKeeper
ASF logo
Commons
Incubator
  • Apache MXNet(英語版)
  • Apache Taverna(英語版)
その他の
プロジェクト
Attic
  • Abdera(英語版)
  • Apache Apex(英語版)
  • AxKit
  • Beehive(英語版)
  • Bluesky(英語版)
  • iBATIS
  • c++ Standard Library(英語版)
  • Cactus(英語版)
  • Click(英語版)
  • Continuum(英語版)
  • Apache Deltacloud(英語版)
  • Apache Etch(英語版)
  • Excalibur(英語版)
  • Forrest(英語版)
  • Hama(英語版)
  • Harmony
  • HiveMind(英語版)
  • Jakarta
  • Lenya(英語版)
  • Marmotta(英語版)
  • ODE(英語版)
  • Shale
  • Slide(英語版)
  • Shindig
  • Stanbol(英語版)
  • Tuscany(英語版)
  • Wave(英語版)
  • Wink(英語版)
  • XML
ライセンス
  • カテゴリ Category
  • コモンズ Commons
  • 表示
  • 編集