JavaのStruts(ストラッツ)とは?概要から使い方を解説
thumb_javastruts_01
JavaのStruts(ストラッツ)とは?概要から使い方を解説
アンドエンジニア編集部
2024.03.16
この記事でわかること
Struts(ストラッツ)は、Javaを用いるウェブ・アプリケーションフレームワークです
JavaServer Pages(JSP)を用いて、動的なウェブページを生成し利用します
MVCアーキテクチャを採用し、開発生産性と保全性を高めます

JavaのStruts(ストラッツ)

img_javastruts_01

Struts(Apache Struts)は、Javaのウェブ・アプリケーションフレームワークです。Apache Strutsプロジェクトで開発されているオープンソース・ソフトウェアであり、読み方は「ストラッツ」です。Apache Tomcatなどのウェブコンテナで利用します。

【参考】:Apache Struts 【参考】:Apache Tomcat

Javaフレームワークとは?メリット・デメリットやおすすめ5選を紹介!

Strutsの概要

Strutsはウェブ・アプリケーションフレームワークとして、動的なウェブページを生成するために使用します。静的なウェブページと異なり、データベースやビジネスロジックと連動して、状況に応じたウェブページを生成します。

【参考】:STRUTS: From a birds eye

Strutsの特徴

ページのデザインやコントロール、さらにデータベースのコードなどが混在するJavaServer Pages(JSP)は、大規模プロジェクトではアプリケーション開発が難しいものでした。Strutsは、上記のようなJSPで課題となっているコードの保全性を高めることができます。

具体的には、StrutsではMVCアーキテクチャを採用しており、開発生産性と保全性を高めることができます。

【参考】:STRUTS: From a birds eye

Strutsのアーキテクチャ

Strutsフレームワークは、REST APIやSOAP、AJAXなどで動作します。Strutsのアーキテクチャは、MVC(Model-View-Controller:モデル・ビュー・コントローラ)フレームワークを採用しています。

MVCで用いられるモデルはビジネスやデータベースのコード、ビューはページデザインのコード、コントローラはナビゲーションコード、と役割づけられています。この役割の分離により、アーキテクチャの堅牢性や実装の容易性を高めることができます。

【参考】:STRUTS: From a birds eye

Strutsの主要コンポーネント

Strutsは、リクエストハンドラ、レスポンスハンドラ、タグライブラリの3つの主要コンポーネントからなります。

リクエストハンドラは、URIにマッピングして使用するもので、アプリケーション開発者が提供します。レスポンスハンドラは、リクエスト完了のために、リソース制御を引き渡すことができます。タグライブラリは、JSPを用いた対話型アプリケーションをフォームで実装するライブラリです。

【参考】:STRUTS: From a birds eye

Strutsのリリースバージョン

Strutsは、メジャーバージョンとして2つのバージョンをリリースしています。

1つは、Struts1(ストラッツ1)です。Struts1は、最初のリリースでJSPをタグでカスタマイズし、コーディングの仕方を改良しました。簡単ではあるものの脆弱性が深刻で、すでに2013年4月にサポート終了を迎えています。

もう1つが、Struts2(ストラッツ2)です。WebWork2を取り込んでアノテーションやDI(依存性の注入)などの実装を行っており、Struts1との互換性はありません。こちらも利便性が高い反面、セキュリティホールなどの問題が生じる場合もあります。

【参考】:STRUTS: From a birds eye

StrutsとSpringの違い

StrutsとSpringの違いは、StrutsがMVCによるアクションが主な使い方であるのに対して、Springは、複数のフレームワークの集合体でありコンポーネントベースで利用することに違いがあります。

コンフィグレーション方法も、StrutsはXMLをベースとしており簡素化が難しいため、サポート終了に伴い、移行先をSpringに切り替える例も数多く見られます。理由としては、Struts1とStruts2では互換性がない点や、脆弱性に関する懸念が続いており、セキュリティ対策が求められる点が挙げられます。

移行手順としては、JavaServer Pagesのタグの変更や、XMLの設定内容をJavaやBeanへ置き換える必要があります。

Strutsの使い方

img_javastruts_02

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

WebサーバーのApacheとは?Webサーバーを学ぶエンジニア必見!

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でウェブ・アプリケーションのスキルアップを図ろう

img_javastruts_03

StrutsはApacheが提供するJavaのウェブ・アプリケーションフレームワークです。長い歴史を持ちますが、Struts1とStruts2の互換性の問題や脆弱性への対応など、多くの課題とともに提供されています。

開発者は、他のウェブ・アプリケーションフレームワークと使い方を比較することで、より自身の知識を高めることができるでしょう。

気になる人のXをフォローしよう!
アンドエンジニア公式LINEでは
新着記事やエンジニアに役立つ情報をお届け!
日々のキャッチアップをお手伝いします!
マイナビITエージェント

編集部オススメコンテンツ

Sponsored
【年収±診断】6つの質問に答えて、真の市場価値をチェック!
マイナビITエージェント
Sponsored

アンドエンジニアへの取材依頼、情報提供などはこちらから

お問い合わせ・情報提供
はじめて転職される方へ
SE・システムエンジニア(IT/通信/インターネット) 求人一覧

編集部おすすめコンテンツ

Sponsored
【年収±診断】6つの質問に答えて、真の市場価値をチェック!
マイナビITエージェント
Sponsored

アンドエンジニアへの取材依頼、情報提供などはこちらから

Powered by マイナビ AGENT