JavaのStruts(ストラッツ)
Struts(Apache Struts)は、Javaのウェブ・アプリケーションフレームワークです。Apache Strutsプロジェクトで開発されているオープンソース・ソフトウェアであり、読み方は「ストラッツ」です。Apache Tomcatなどのウェブコンテナで利用します。
【参考】:Apache Struts 【参考】:Apache Tomcat
Strutsの概要
Strutsはウェブ・アプリケーションフレームワークとして、動的なウェブページを生成するために使用します。静的なウェブページと異なり、データベースやビジネスロジックと連動して、状況に応じたウェブページを生成します。
Strutsの特徴
ページのデザインやコントロール、さらにデータベースのコードなどが混在するJavaServer Pages(JSP)は、大規模プロジェクトではアプリケーション開発が難しいものでした。Strutsは、上記のようなJSPで課題となっているコードの保全性を高めることができます。
具体的には、StrutsではMVCアーキテクチャを採用しており、開発生産性と保全性を高めることができます。
Strutsのアーキテクチャ
Strutsフレームワークは、REST APIやSOAP、AJAXなどで動作します。Strutsのアーキテクチャは、MVC(Model-View-Controller:モデル・ビュー・コントローラ)フレームワークを採用しています。
MVCで用いられるモデルはビジネスやデータベースのコード、ビューはページデザインのコード、コントローラはナビゲーションコード、と役割づけられています。この役割の分離により、アーキテクチャの堅牢性や実装の容易性を高めることができます。
Strutsの主要コンポーネント
Strutsは、リクエストハンドラ、レスポンスハンドラ、タグライブラリの3つの主要コンポーネントからなります。
リクエストハンドラは、URIにマッピングして使用するもので、アプリケーション開発者が提供します。レスポンスハンドラは、リクエスト完了のために、リソース制御を引き渡すことができます。タグライブラリは、JSPを用いた対話型アプリケーションをフォームで実装するライブラリです。
Strutsのリリースバージョン
Strutsは、メジャーバージョンとして2つのバージョンをリリースしています。
1つは、Struts1(ストラッツ1)です。Struts1は、最初のリリースでJSPをタグでカスタマイズし、コーディングの仕方を改良しました。簡単ではあるものの脆弱性が深刻で、すでに2013年4月にサポート終了を迎えています。
もう1つが、Struts2(ストラッツ2)です。WebWork2を取り込んでアノテーションやDI(依存性の注入)などの実装を行っており、Struts1との互換性はありません。こちらも利便性が高い反面、セキュリティホールなどの問題が生じる場合もあります。
StrutsとSpringの違い
StrutsとSpringの違いは、StrutsがMVCによるアクションが主な使い方であるのに対して、Springは、複数のフレームワークの集合体でありコンポーネントベースで利用することに違いがあります。
コンフィグレーション方法も、StrutsはXMLをベースとしており簡素化が難しいため、サポート終了に伴い、移行先をSpringに切り替える例も数多く見られます。理由としては、Struts1とStruts2では互換性がない点や、脆弱性に関する懸念が続いており、セキュリティ対策が求められる点が挙げられます。
移行手順としては、JavaServer Pagesのタグの変更や、XMLの設定内容をJavaやBeanへ置き換える必要があります。
Strutsの使い方
Strutsを使うには、サポートされているStruts2の要件や使い方を理解する必要があります。最初は、公式サイトの「Getting Started」から「How To Create A Struts 2 Web Application」のページを参考にするのが良いでしょう。詳細は以降で解説していきます。
【参考】:STRUTS: Getting Started 【参考】:STRUTS: How To Create A Struts 2 Web Application
Mavenを使用したStruts2 ウェブアプリケーションの作成方法
Mavenとは、Apacheが提供するJava用プロジェクト管理ツールを指します。ここではStrutsのウェブアプリケーションを、Mavenを用いてプロジェクトの作成からコンパイル・テスト、デプロイなど一連の処理を行っていきます。
【参考】:Apache Maven
Strutsのダウンロード
Strutsを使用するには、公式ダウンロードサイトからモジュールをダウンロードしてZipファイルを解凍し、プロジェクトの”WebContent/WEB-INF/lib”フォルダにコピーしておきます。
最新バージョンは、6.3.0.2です。6.3.0.2の動作条件は「Announcements 2023」に記載の通り、Servlet API 3.1、 JSP API 2.1、Java 8です。
公式ダウンロードサイトにはサンプルコードも掲載されていますので、必要に応じてダウンロードを行います。Javaプロジェクト管理のMavenは、ダウンロード後にZipファイルを展開し、任意のフォルダーにコピーします。
【参考】:STRUTS: Download a Release of the Apache Struts 【参考】:STRUTS: Announcements 2023 【参考】:Downloading Apache Maven 3.9.6
Mavenを用いたウェブアプリケーション開発の基本手順
Mavenを用いたウェブアプリケーション開発は、いくつかの手順に分かれます。
手順1:POMを用意する POM(Project Object Model)は、Javaのプロジェクトで必要な処理を集約したものです。pom.xmlファイルに記述して処理を行います。
手順2:index.jspを作成する JSPのウェルカムページとなる、index.jspを作成します。ここまでで、Mavenの基本部分が完了します。
手順3:pom.xmlにStrutsのJarファイルを追加する Strutsを使うには、pom.xmlにJarファイルを追加し、ウェブアプリケーションのクラスパスで利用します。
手順4:ロギングを追加する 必要に応じて“src/main/resources”フォルダにlog4j2.xmlをセットアップし、pom.xmlにJarファイルを追加します。
手順5:Struts Servlet Filterを追加する Servlet filterクラスとfilter mappingをweb.xmlに追加することで、アプリケーションからStrutsが利用可能になります。web.xmlは、”src/main/webapp/WEB-INF”フォルダに格納します。
手順6:struts.xmlを作成する Strutsのコンフィグレーションファイルとなるstruts.xmlを作成します。”src/main/resources”に配置しておきます。XMLのコンフィグレーションファイルあるいはアノテーションが利用できます。
手順7:アプリケーションのビルドと実行 Mavenのコマンド”mvn jetty:run”を使用して、Java ServletコンテナのJettyを起動します。コンソールを確認し、Strutsのウェブアプリケーション・フレームワークのメッセージを確認します。
【参考】:STRUTS: How To Create A Struts 2 Web Application
Strutsの入門情報
Strutsの入門情報は、公式サイトの「Documentation」メニューから参照します。最初は、「Getting Started」に目を通します。各用語は、「Key Technologies Primer」にまとめられています。サンプルコードは、GitHubに掲載されていますので参考にしてください。情報は英語で掲載されています。
ウェブで参考情報の検索をする際には、今でも多くのコンテンツでStruts1の内容が出てきます。現在サポートされているのはStruts2であり、両バージョンには互換性がありません。この点を理解した上で、調査しましょう。
【参考】:STRUTS: Getting Started 【参考】:STRUTS: Key Technologies Primer 【参考】:GitHub: Apache / Struts Examples
Strutsでウェブ・アプリケーションのスキルアップを図ろう
StrutsはApacheが提供するJavaのウェブ・アプリケーションフレームワークです。長い歴史を持ちますが、Struts1とStruts2の互換性の問題や脆弱性への対応など、多くの課題とともに提供されています。
開発者は、他のウェブ・アプリケーションフレームワークと使い方を比較することで、より自身の知識を高めることができるでしょう。
その他のJava関連記事
その他、Javaに関連する内容は、下記の記事でもご紹介しています。ぜひ参考にご覧ください。
編集部オススメコンテンツ
アンドエンジニアへの取材依頼、情報提供などはこちらから