【Struts2】Struts2 + Tomcat + EclipseでWebアプリ入門(ビルドツールなし)

Struts2

Struts2の学習について

Struts2 は既に枯れた技術でレガシーと言われるかと思いますが業務で Struts2(Struts1も)を使用しなければいけないので、やはり最低限基礎的な動作や仕様を理解しなければいけないと思います。

Struts2とは

Struts2は古典的なJavaベースのWebアプリケーションフレームワークの一つであり、かつては非常に人気がありましが、Struts2はいくつかのセキュリティの問題点もあって、今は新規プロジェクトで使われることはないと思います。新しくJavaのサーバサイドのフレームワークを学ぶならば、Struts2よりも Spring Boot がおすすめです。技術的な概要は From a birds eye に記載されています。

現在のStruts2の学習について難しさについて

枯れた技術なのでノウハウもそれなりに溜まって学習しやすいのではないか?と考える人もいるかもしれませんが古すぎる技術ゆえに学習が困難になっている点について、その理由を2点挙げておきます。(もちろん、Qiitaに大変参考になる記事もあります。)

  • 多くの記事が古すぎる
    古すぎるゆえに使用しているライブラリでエラーが出るなど、バージョン管理でエラーが出る。またエラーが出たときの検索結果がこれがまた古い。うまく解決できれば良いですが、試してダメだなら他の記事を参照してなど解決できなければ、ひどいループに陥ります。特に環境構築系はエラーがわかりづらいということもあります。
  • Struts2に組み合わせる選択肢やオプションが広すぎる
    Struts2に限らないのですがWebは複数の技術の組み合わせなので、ビルドツールはAnt・maven・Gradle、WebサーバーはTomcat・Jetty、さらにプロジェクトを作成する方法もコマンドを実行するやり方から、EclipseやVSCodeも拡張機能でmavenのStrutsのプロジェクトを作成できます。(maven+struts2 だけでも Archetypes の組み合わせが多く、初心者には特にわかりづらい)

Struts2をWebプロジェクトに導入する

Struts2を利用したプロジェクトの導入として、maven などのビルドツールを使用せずに、EclipseでWebのプロジェクトを作成して、Struts2を導入するのであれば、Qiitaの記事 【超初心者向け】Struts2超入門 – 2018年版Struts2入門(2023年最新版) が参考になります。

実際にこの記事を参考にしていくつかポイントを紹介していきます。この記事に限りませんがエラーなくスムーズに進めるためには、できるだけ同じ手順でつまり、ファイル構成や使用するライブラリのバージョンは変更せずに進めることをお勧めしてます。

実行環境

実行環境は以下のようになります。

  • MacOS Ventura Version 13.4.1
  • Eclipse IDE for Java Developers (includes Incubating components) Version: 2023-06 (4.28.0)

Eclipse で動的Webプロジェクトを作成する。

基本的にはWebアプリケーションを作成する場合は「動的Webプロジェクト」からプロジェクトの雛形を作成します。ランタイムなど各種される設定項目は Eclipse ヘルプの「動的 Web プロジェクトの作成」に、作成されるディレクトリの役割に関しては「動的 Web プロジェクトおよびアプリケーション」を確認すると簡潔に記載がされています。

重要な設定項目

Javaのビルド・パス

Javaのビルド・パスはもっともと言って良いほど重要な設定項目です。

WebContent/WEB-INF/lib/にjarを追加すると (または設定によって src/main/webapp/WEB-INF/lib/) 以下のように、Web App ライブラリーに同じjarが追加されます。

プロジェクト・ファセット

プロジェクト・ファセットはプロジェクトの機能や設定に関する部分ですが、バージョンやランタイムが指定したTomcat8になっているかは確認します。特にJavaのバージョンを変えたり、ランタイムを変更したりする場合は同時に確認する設定です。

Tomcatのバージョンについて

Tomcatのバージョンは大きく7系から10系で8系を使用数場面が多いかと思いますが、それぞれのバージョンによって、対応しているJSP&サーブレット(Struts2フレームワークもこの技術をベースに開発されています)のバージョンも異なるので注意が必要です。

特に Tomcat10に関しては、色々な経緯があり(以下の引用参照)APIのパッケージ名が変更しているので注意が必要です。簡単に訳すと、「Java EEがEclipse Foundationに移管された時にAPIの名称が変更されたから、Tomcat9からTomcat10に変更するときは、パッケージ名を javax.* から jakarta.* に変更する必要がある」ということです。

Users of Tomcat 10 onwards should be aware that, as a result of the move from Java EE to Jakarta EE as part of the transfer of Java EE to the Eclipse Foundation, the primary package for all implemented APIs has changed from javax.* to jakarta.*. This will almost certainly require code changes to enable applications to migrate from Tomcat 9 and earlier to Tomcat 10 and later. A migration tool is javax.* to jakarta.*available to aid this process.

https://tomcat.apache.org/
import javax.servlet*;

//↑を以下↓のように修正します。
import jakarta.servlet*;

実務で既存のプロジェクトをインポートするときに、ServletやCookie関連の「〜を型に解決できません」というエラーはサーバ関連のエラーで、「Javaのビルド・パス」にTomcat8などサーバー・ランタイムに適切な設定されていないときに発生したりします。

参照

Apache Struts
【超初心者向け】Struts2超入門 – 2018年版
Struts2入門(2023年最新版)

タイトルとURLをコピーしました