Struts入門(日本語版)

ITチュートリアルのビデオをやりたいのですが、ウェブサイトのコンテンツに応じてビデオチュートリアルのテキストコンテンツを配置していただけますか。 Strutsチュートリアルから始めましょう、そしてあなたは私にカバーするもののリストを与えるでしょう。

もちろんです! 以下は、Struts ベースの IT チュートリアルビデオシリーズの概要です。 この概要に基づいてチュートリアルビデオを作成できます。

  1. ストラット入門 1.1. ストラット1.2とは何ですか。 ストラット1.3の歴史と発展。 ストラットの利点とアプリケーションシナリオ
  2. ストラットコアコンポーネント 2.1. アクションサーブレット 2.2. 設定ファイル (struts-config.xml) 2.3. フォームBean(アクションフォーム) 2.4. ビジネスロジック処理(アクション) 2.5. ビュー (JSP)
  3. Struts 開発環境のセットアップ 3.1. JDK のインストールと設定 3.2. Eclipse IDE のインストールと設定 3.3. Tomcat サーバーのインストールと設定 3.4. Struts ライブラリファイルのダウンロードとインポート
  4. 最初のストラットプログラム 4.1. 単純な Struts プロジェクトを作成する 4.2. クラスを書く 4.3. アクションクラスを書く 4.4. JSP ページの作成 4.5. ストラット設定の設定.xml 4.6. コンパイル、配置、およびテスト
  5. ストラットフォームの検証 5.1. Struts の組み込み検証フレームワーク 5.2 の紹介。 バリデータを書く 5.3. バリデーションルールファイルの設定 (バリデーション.xml) 5.4. エラーメッセージの国際化
  6. ストラットタグライブラリ 6.1. Struts タグライブラリの概要 6.2. 一般的なストラットタグの使用例 6.3. ストラットラベルのカスタマイズ
  7. ストラットインターセプター 7.1. インターセプター入門 7.2. カスタムインターセプターの作成 7.3. インターセプター チェーンを構成する
  8. ストラットとエイジャックス 8.1. Ajax 8.2 の概要。 Struts と Ajax 8.3 の統合。 Ajax の例を実装する
  9. 実例:単純なCRUDアプリケーション 9.1. プロジェクト要件分析 9.2. データベースの設計と構築 9.3. ActionForm、Action、および JSP ページの実装 9.4. データ アクセス層 (DAO) の実装 9.5. ビジネス ロジック層を実装する (サービス)
  10. ストラットのベストプラクティス 10.1. プロジェクトの構造と命名規則 10.2. パフォーマンスチューニングの推奨事項 10.3. セキュリティに関する推奨事項

このコンテンツの概要が、高品質のStrutsチュートリアルビデオの作成に役立つことを願っています。 もしあれば

軍亭

ストラットとは何かを詳しく説明してください

Struts は、Apache Software Foundation によって保守および開発されたオープンソースの Java Web アプリケーションフレームワークです。 MVC(モデルビューコントローラ)デザインパターンを採用して、Webアプリケーションの開発と保守を簡素化します。 Struts フレームワークは、機能豊富なコンポーネントとタグ・ライブラリーのセットを提供することにより、開発者がスケーラブルで保守可能な Web アプリケーションを迅速に構築するのに役立ちます。

MVC デザインパターンの 3 つのコンポーネントは、Struts フレームワークに具体化されています。

  1. モデル: モデルは、アプリケーションのビジネス ロジックとデータを表します。 Struts では、モデルは通常、JavaBean、POJO (Plain Old Java Object)、およびデータベース・アクセス・レイヤーで構成されます。
  2. ビュー: ビューは、ユーザーにデータを表示する役割を担います。 Struts では、ビューは通常、JSP (JavaServer Pages) ページ、HTML、CSS、JavaScript などのフロントエンド技術によって実装されます。
  3. コントローラー: コントローラーは、ユーザー要求の処理とモデルの更新を担当します。 Struts では、コントローラーは ActionServlet と Action クラスで構成されます。 ActionServlet はユーザーの要求を受信し、要求を適切な Action クラスに配布し、適切な Action クラスは要求を処理してモデルを更新し、最後に処理結果をビューに返します。

ストラットの主な機能:

  1. MVCデザインパターンが採用されており、コードの階層化とモジュール化に役立ち、コードの保守性と拡張性が向上します。
  2. JSP ページ開発を簡素化する豊富なタグライブラリを提供します。
  3. フォームの検証、国際化、エラー処理、その他の機能をサポートし、開発者が高品質のWebアプリケーションを実装するのに便利です。
  4. 優れたコミュニティサポートとドキュメントにより、開発者は簡単に学習して使用できます。

要約すると、Struts は、あらゆる規模の Web プロジェクトを構築するための、機能が豊富で使いやすい Java Web アプリケーション・フレームワークです。

軍亭

ストラットの歴史と発展について詳しく教えてください

Strutsフレームワークの歴史と開発は、次の段階に分けることができます。

  1. Struts フレームワークは、もともと 2000 年に Craig R. McClanahan によって作成されました。 当時、Java Webアプリケーションは開発と保守が比較的複雑で、統一された設計パターンと仕様がありませんでした。 Craig R. McClanahan は、MVC デザインパターンに触発されて、Java Web アプリケーションの開発プロセスを簡素化することを目的とした Struts フレームワークを作成しました。
  2. 成長段階:2001年、StrutsプロジェクトはApache Jakartaプロジェクトに正式に採用され、より多くの注目と使用を受け始めました。 2002年、Apache Struts 1.0がリリースされ、当時人気のあるJavaWebアプリケーションフレームワークになりました。 その後、Struts はバージョンを繰り返し続け、フォーム検証、国際化、タグライブラリなどの新機能を導入し、徐々に Java Web 開発の業界標準になりました。
  3. 変革フェーズ:2004年、WebWorkフレームワークの開発チームはStrutsチームと合併し、新しいJava EEベースのWebアプリケーションフレームワークを開発しました。 Struts 2と呼ばれるこの新しいフレームワークは、Struts 1のコアコンセプトの一部を保持しながら、インターセプター、OGNL式などのWebWorkの優れた機能を導入しています。 2007年、Struts 2.0が正式にリリースされ、Strutsファミリーの次世代となりました。
  4. 着実な開発:過去2年ほどにわたって、Struts 2フレームワークは継続的に更新および最適化され、より多くの新機能と改善点が提供されてきました。 Spring MVCやJavaServer Facesなどの他のJava Webフレームワークがこの期間中に上昇し、市場シェアを獲得しましたが、Struts <>は依然として多くの企業やプロジェクトで広く使用されています。

概要: Struts フレームワークの歴史と発展は、創造、成長、変革、安定的な発展の段階を経てきました。 Struts 1 から Struts 2 まで、Java Web アプリケーション開発の重要なフレームワークとなっています。 今日の市場には他にも多くのJava Webフレームワークがありますが、Strutsにはまだある程度の競争力と影響力があります。

軍亭

Strutsの利点とアプリケーションシナリオを詳しく説明してください

Strutsフレームワークには、Webアプリケーション開発において特定の利点がありますが、主な利点のいくつかを次に示します。

  1. MVC デザインパターン: Struts は、コードの階層化とモジュール性を助長するモデル・ビュー・コントローラー (MVC) デザイン・パターンを採用し、コードの保守性と拡張性を向上させます。 Struts は、ビジネスロジック、データ表示、ユーザーリクエスト処理を分離することで、開発者がプロジェクトを簡単に保守および拡張できるようにします。
  2. リッチタグライブラリ: Struts は、HTML タグ、Bean タグ、論理タグなどを含むリッチなタグライブラリを提供します。 これらのタグは、JSP ページの開発を簡素化し、開発者がビューレイヤーコードをより効率的に記述できるようにします。
  3. フォーム検証と国際化のサポート: Struts には、開発者がフォームに検証ルールを簡単に追加できるフォーム検証フレームワークが組み込まれています。 さらに、Struts は、多言語 Web アプリケーションを構築する開発者に国際化サポートを提供します。
  4. 拡張性:Strutsは拡張性が高く、プラグイン、カスタムインターセプター、カスタムラベルなどでフレームワーク機能を拡張できます。 これにより、Struts はさまざまな複雑なアプリケーションシナリオに適応できます。
  5. コミュニティサポート: Struts には大規模な開発者コミュニティと豊富なドキュメントリソースがあり、開発者は Struts フレームワークを簡単に習得して使用できます。 同時に、Strutsは成熟したフレームワークであるため、問題が発生したときにコミュニティで解決策を見つけるのは簡単です。

アプリケーションシナリオ:

Struts フレームワークは、以下のアプリケーション・シナリオに適しています。

  1. エンタープライズWebアプリケーション:Strutsフレームワークは、データ検証、国際化、エラー処理など、成熟したソリューションとツールのセットを提供するため、エンタープライズWebアプリケーションの構築に最適です。 さらに、MVC デザイン パターンを使用すると、コードの保守性と拡張性を向上させることができます。
  2. 教育とトレーニング: Struts は広範なドキュメントとコミュニティサポートを備えているため、教育およびトレーニング環境にも適しています。 学習者は、Struts フレームワークを学ぶことで、Java Web 開発の基本原則とスキルを習得できます。
  3. 中小規模の Web プロジェクト: Struts フレームワークは、あらゆる規模の Web プロジェクトに適しています。 中小規模のWebプロジェクトの場合、Strutsは開発の難しさを軽減するための迅速な開発ソリューションを提供できます。

Struts は、いくつかの点で他の最新のフレームワーク (Spring MVC など) ほど良くないかもしれませんが、それでも機能です。

軍亭

続けてください

ある程度の競争力を備えた強力で成熟したJava Webアプリケーションフレームワーク。 他のユースケースでの Struts のパフォーマンスは次のとおりです。

  1. 他のフレームワークとの統合: Struts は、Hibernate、Spring、MyBatis などの他の Java テクノロジーやフレームワークと統合できます。 これにより、開発者はこれらのフレームワークを最大限に活用して、より複雑でパフォーマンスの高いWebアプリケーションを構築できます。
  2. 変化するニーズへの適応:Strutsのスケーラビリティと柔軟性により、変化するビジネスニーズに適応できます。 開発者は、プロジェクトの要件に応じて Struts フレームワークをカスタマイズおよび拡張し、さまざまなアプリケーション・シナリオに対応できます。
  3. 大規模プロジェクトと分散システム: Struts フレームワークは、大規模プロジェクトと分散システムの開発をサポートできます。 MVC 設計パターンを使用すると、開発者はビジネス ロジック、データ処理、ユーザー インターフェイスを分離できるため、チームの共同開発とプロジェクト管理に役立ちます。 同時に、Strutsの他のフレームワークとの統合機能は、高性能で可用性の高い分散システムの構築にも役立ちます。

要約すると、Struts フレームワークは、いくつかの点で他の最新のフレームワークほど優れていない可能性がありますが、それでも多くのアプリケーション シナリオで競争力があります。 Struts フレームワークは、開発者がスケーラブルで保守可能な Web アプリケーションを迅速に構築し、他の Java テクノロジーやフレームワークとシームレスに統合して、完全な Java Web 開発ソリューションを提供するのに役立ちます。

軍亭

Struts コアコンポーネントコントローラ (ActionServlet ) について詳しく説明してください。

Struts フレームワークでは、コントローラーはユーザー要求の処理とモデルとビューの調整を担当するコア コンポーネントです。 ActionServlet は Struts の主要なコントローラーコンポーネントであり、ユーザーリクエストを受信し、適切な Action クラスに配布し、処理結果をビューレイヤーに返す中央スケジューラとして機能します。

アクションサーブレットの主な責任とワークフローは次のとおりです。

  1. 初期化: Web アプリケーションが起動すると、アクションサーブレットが自動的に初期化されます。 初期化中に、Struts 構成ファイル (通常は struts-config.xml) を読み取り、アクションマップ、フォーム Bean、グローバル例外処理、およびそこで定義されているその他の情報をロードし、この情報を内部データ構造に格納して、後で使用できるようにします。
  2. 要求処理: ユーザーが要求を開始すると、要求は最初にアクションサーブレットに到着します。 中央ディスパッチャーとして、ActionServlet は要求を解析し、要求のターゲット Action クラスを識別する役割を担います。 次に、Action オブジェクトを作成し、必要なすべての要求パラメーターとデータを準備し、処理のために要求を Action オブジェクトに委任します。
  3. アクションの実行: Action オブジェクトは、要求を受信すると、対応するビジネス ロジックを実行します。 これには、データベースアクセスレイヤーなどのモデルレイヤーと対話して、データを取得または更新することが含まれる場合があります。 要求を処理した後、Action オブジェクトは、”アクション転送” または “アクション結果” と呼ばれることが多い、処理の結果を表す文字列を返します。
  4. 結果の分布: アクションオブジェクトによって返されたアクション結果に基づいて、アクションサーブレットは対応するビューページ(JSPファイルなど)を探します。 次に、要求を適切なビュー ページに転送して、ビュー ページで処理結果をユーザーに表示できるようにします。
  5. エラー処理: 要求処理中に例外が発生すると、ActionServlet は、Struts 構成ファイルで定義されているグローバル例外処理規則に従って、例外を適切なエラー処理ページまたは処理クラスに転送します。 このようにして、開発者はエラーや例外の処理に集中でき、コードの保守性が向上します。

要約すると、ActionServletはStrutsフレームワークのコアコントローラーコンポーネントであり、ユーザー要求の受信、アクションクラスのディスパッチ、処理結果の配布、およびエラーと例外の処理を担当します。 ActionServlet を使用すると、開発者は Web アプリケーションの要求処理ロジックを実装して、開発プロセスを簡素化し、コード品質を向上させることができます。

軍亭

Struts コアコンポーネントの設定ファイル (struts-config.xml) について詳しく説明してください。

Struts フレームワークのコア構成ファイル (struts-config.xml という名前がよくあります) は、アクション・マップ、フォーム Bean、グローバル例外処理など、Struts アプリケーションのさまざまなコンポーネントを定義および構成する XML ファイルです。 この構成ファイルはアプリケーションの始動時にロードされ、実行に必要な情報が Struts に提供されます。 Struts フレームワークでは、struts-config .xml・ファイルが重要な役割を果たし、開発者がアプリケーション全体の動作を一元的に管理および制御できるようにします。

struts-config .xml 構成ファイルの主な要素は次のとおりです。

  1. アクション マッピング: この要素には、要求パスと Action クラス間のマッピングを定義する 1 つ以上のアクション要素が含まれます。 各アクション要素には、パス、Action クラス、および要求の結果 (成功、失敗など) とビュー ページの間のマッピングを定義する 1 つ以上の転送要素が含まれています。
  2. form-beans: このエレメントには、フォーム Bean を定義する 1 つ以上のフォーム Bean エレメントが含まれます。 フォーム Bean は通常、フォームデータをカプセル化する JavaBean です。 各フォーム Bean 要素には、名前と対応する Java クラスが含まれています。
  3. グローバル例外: この要素には、グローバル例外処理規則を定義する 1 つ以上の例外要素が含まれます。 各例外要素には、例外の種類と、対応するエラー処理ページ (パス) またはハンドラーが含まれています。
  4. グローバル転送: この要素には、グローバル ビュー ジャンプ ルールを定義する 1 つ以上の前方要素が含まれます。 各 forward 要素には、名前と対応するビュー ページ (パス) が含まれています。
  5. メッセージリソース: この要素は、国際化されたリソースファイルの場所を定義するために使用されます。 異なる言語のリソース・ファイルを参照することにより、Struts フレームワークは多言語サポートを実現できます。
  6. プラグイン: このエレメントには、Struts アプリケーションに必要なプラグインを定義する 1 つ以上のプラグイン・エレメントが含まれます。 各プラグイン・エレメントには、対応する Java クラス (className) が含まれています。

要約すると、struts-config.xml 構成ファイルは、Struts フレームワークのコア構成ファイルであり、Struts アプリケーションのさまざまなコンポーネントを定義および構成します。 このファイルを変更および調整することにより、開発者はアプリケーション全体の動作を簡単に一元的に管理および制御できます。

軍亭

Struts コアコンポーネントフォーム Bean (ActionForm) について詳しく説明してください。

Struts フレームワークでは、フォーム Bean (通常は ActionForm クラスから継承) は、ユーザーから送信されたフォーム・データをカプセル化および処理するために使用される Java クラスです。 フォームBeanは通常、一連のプロパティと対応するゲッターメソッドとセッターメソッドを持つ単純なJavaBeanです。 フォーム Bean を使用すると、開発者はフォーム・データを特定の処理ロジック (Action クラスなど) から切り離して、コードの可読性と保守性を向上させることができます。

フォーム Bean の主な機能は次のとおりです。

  1. データのカプセル化: フォーム Bean は、ユーザーが送信したフォーム・データのカプセル化を担当します。 各フォーム Bean のプロパティーは、通常、フォーム内の入力フィールドに対応します。 ユーザーがフォームを送信すると、Struts フレームワークはフォーム・データを対応するフォーム Bean に自動的に取り込みます。
  2. データ変換: フォーム Bean は、ユーザーが送信したフォームデータを適切な Java データ型に変換できます。 例えば、文字列型のフォームデータを整数や日付などに変換します。 これにより、開発者はフォームデータの処理と検証が容易になります。
  3. データ検証: フォーム Bean には、ユーザーが送信したフォームデータが予期される形式と制約に準拠しているかどうかをチェックする検証ロジックを含めることができます。 たとえば、入力フィールドが空かどうか、または数値が指定された範囲内にあるかどうかを確認します。 開発者は、フォーム Bean の validate() メソッドでこれらの検証ロジックを実装できます。 フォーム・データが検証に失敗した場合、Struts フレームワークはユーザーにエラー・メッセージを返し、適切なエラー・メッセージを表示します。
  4. Action クラスからの分離: フォーム Bean は、具体的な処理ロジック (Action クラスなど) から切り離されます。 つまり、開発者はフォーム Bean を変更せずに Action クラスを変更または置換できます。 この分離により、コードの可読性と保守性が向上します。
  5. 再利用と共有: フォーム Bean は独立した Java クラスであるため、複数のアクションクラス間で再利用および共有できます。 これにより、開発者は類似したフォームデータをより効率的に操作できます。

要約すると、フォーム Bean (通常は ActionForm クラスから継承) は、ユーザーが送信したフォーム・データをカプセル化および処理するための Struts フレームワークのコア・コンポーネントです。 フォーム Bean を使用すると、開発者はフォーム・データを特定の処理ロジックから切り離し、コードの可読性と保守性を向上させ、データ検証および変換関数を実装できます。

軍亭

Strutsのコアコンポーネントであるビジネスロジック処理(アクション)について詳しく説明してください

Struts フレームワークでは、ビジネス ロジック処理コンポーネントは通常、Action クラスによって実装されます。 Action クラスは、ユーザー要求を処理し、ビジネス・ロジックを実行し、処理結果を返す Struts アプリケーションの重要な部分です。 Action クラスは通常、org.apache.struts.action.Action 基本クラスから継承し、リクエストが到着したときに適切なアクションを実行するexecute() メソッドを実装します。

Action クラスの主な役割と機能は次のとおりです。

  1. ユーザー要求の処理: ユーザーが要求を開始すると、要求は最初に ActionServlet に到着し、次に要求のパスに基づいて対応する Action クラスにマップされます。 Action クラスは、ユーザー要求を処理し、要求の種類に応じて適切なビジネス ロジックを実行します。
  2. フォーム Bean の操作: Action クラスは通常、ユーザーが送信したフォームデータにアクセスする必要があります。 Struts フレームワークでは、フォーム・データはフォーム Bean にカプセル化されます。 Action クラスは、フォーム Bean のプロパティーおよびメソッドにアクセスすることによって、フォーム・データを取得および操作できます。
  3. モデル層との対話: Action クラスは、通常、データを取得または更新するために、アプリケーションのモデル層 (データベース アクセス層、ビジネス ロジック層など) と対話する必要があります。 モデル層と対話することにより、Action クラスは具体的なビジネス ロジックを実装します。
  4. 処理結果を返す: 要求を処理した後、Action クラスは、処理の結果を表す文字列 (“アクション転送” または “アクション結果” とも呼ばれます) を返す必要があります。 このストリングは、Struts 構成ファイルで定義されたビュー・ページにマップされ、要求の転送先ビュー・ページを ActionServlet に指示するために使用されます。
  5. エラー処理: リクエストの処理中に例外が発生した場合、Action クラスは org.apache.struts.action.ActionError または org.apache.struts.action.ActionErrors インスタンスをスローできます。 これらのエラー・メッセージは Struts フレームワークによってキャプチャーされ、適切なエラー・メッセージを表示するためにユーザーに返されます。

要約すると、Action クラスは、ユーザー要求を処理し、ビジネス・ロジックを実行し、処理結果を返す Struts フレームワークのコア・コンポーネントです。 Action クラスを実装することで、開発者は Web アプリケーションの要求処理ロジックを実装し、フォーム Bean およびモデル層と対話し、エラーと例外を処理できます。

軍亭

Struts コアコンポーネントビュー(JSP)について詳しく説明してください

Struts フレームワークでは、ビュー層がデータとユーザー インターフェイスのレンダリングを担当し、通常は JavaServer Pages (JSP) テクノロジを使用して実装されます。 JSP は Java ベースのサーバーサイドスクリプト言語であり、開発者は HTML または XML ページに Java コードを埋め込んで動的コンテンツを生成および表示できます。 JSP を使用することにより、Struts フレームワークはリッチでインタラクティブなユーザー・インターフェースを提供し、アクション・クラスおよびフォーム Bean と対話できます。

Struts フレームワークで JSP をビュー層として使用する主な機能は次のとおりです。

  1. 動的コンテンツ生成: Java コード、式、カスタムタグなどの要素を JSP ページに埋め込むことで、開発者は動的コンテンツを生成して表示できます。 これにより、ビューレイヤーは、ユーザーの要求とアプリケーション状態の変更に基づいて、さまざまなコンテンツとインターフェイスを表示できます。
  2. アクションクラスとフォームBeanとの対話: JSPページは、アクションクラスのデータとメソッドにアクセスしてBeanをフォームできます。 Struts フレームワークが提供するカスタム・タグ (struts-tags など) を使用することで、開発者はこのデータを簡単にフェッチして JSP ページに表示し、対応する処理ロジックをトリガーできます。
  3. フォーム処理: JSP ページを使用して、ユーザーフォームを作成および処理できます。 Struts フレームワークが提供するフォーム・タグ (<form>、<input> など) を使用することで、開発者は簡単にフォームを作成し、フォーム・データを適切なアクション・クラスに送信し、処理のために Bean を形成することができます。
  4. エラー・メッセージと国際化: JSP ページでは、Struts フレームワークが提供するカスタム・タグを使用して、エラー・メッセージと国際化情報を表示できます。 たとえば、Action クラスによってスローされたエラー メッセージを表示するには struts:errors タグを使用し、国際化されたリソース ファイルから文字列を表示するには struts:text タグを使用します
  5. テンプレートとレイアウト: 開発者は、JSP テクノロジを使用して、ページのデザインとメンテナンスを簡素化する再利用可能なテンプレートとレイアウトを作成できます。 たとえば、JSP の include ディレクティブとカスタムタグライブラリを使用することで、開発者は共通のページ要素 (ヘッダー、フッターなど) を個別のテンプレートに抽象化し、他のページで参照できます。

要約すると、JSP は、Struts フレームワークのビュー層コンポーネントとして、データとユーザー・インターフェースのレンダリング、およびアクション・クラスとフォーム Bean との対話を担当します。 JSP テクノロジを使用すると、開発者は動的コンテンツを生成して表示し、フォームの処理とエラーメッセージを簡素化し、再利用可能なテンプレートとレイアウトを作成できます。

軍亭

Struts開発環境へのJDKのインストールと設定について詳しく説明してください

Struts 開発環境をセットアップするには、まず Java 開発キット (JDK) をインストールして構成する必要があります。 JDK をインストールして構成するための詳細な手順を次に示します。

  1. JDKのダウンロード: オラクルの公式Webサイト(https://www.oracle.com/java/technologies/javase-downloads.html)にアクセスして、JDKインストールパッケージの最新バージョンをダウンロードします。 ご使用のオペレーティング・システム(Windows、macOS、Linux など)に基づいて適切なインストール・パッケージを選択します。 Struts フレームワークには Java バージョン 1.8 以降が必要であることに注意してください。
  2. JDK のインストール: ダウンロードが完了したら、インストールパッケージをダブルクリックし、プロンプトに従ってインストールします。 インストール時に、JDK のインストールパスを選択するか、デフォルトのパスを使用できます。 インストールが完了すると、JDK は “jdk バージョン番号” という名前のフォルダーにインストールされます。
  3. 環境変数の構成: オペレーティング システムが JDK の実行可能ファイル (javac や java など) を見つけるには、環境変数を構成する必要があります。 さまざまなオペレーティング システムの構成方法を次に示します。
    • ウィンドウズ:
      1. JDK がインストールされているパスを見つけます (例: C:\Program Files\Java\jdk バージョン番号)。
      2. [コンピューター] (または [PC] ) を右クリックし、[プロパティ] を選択して、[システムの詳細設定] をクリックします。
      3. [システムのプロパティ] ウィンドウで、[環境変数] ボタンをクリックします。
      4. 「システム変数」セクションで、「パス」という名前の変数を見つけて、「編集」ボタンをクリックします。
      5. “Path” 変数の値に、JDK の bin フォルダーへのパスを追加します (例: C:\Program Files\Java\jdk-バージョン番号\bin)。 必ずセミコロン (; )分離。
      6. [OK] をクリックして変更を保存します。
    • マックOS:
      1. ターミナルで次のコマンドを入力して、bash構成ファイルを開きます。nano ~/.bash_profile
      2. ファイルの最後に以下を追加します(「your_path_to_jdk」を実際のJDKインストールパスに置き換えます)。 bashCopy コードexport JAVA_HOME=your_path_to_jdk export PATH=$JAVA_HOME/bin:$PATH
      3. 「Ctrl + X」を押して終了し、「Y」を押して変更を保存します。 最後に、変更を有効にするために入力します。source ~/.bash_profile
    • リナックス:
      1. ターミナルで次のコマンドを入力して、bash構成ファイルを開きます。nano ~/.bashrc
      2. ファイルの最後に以下を追加します(「your_path_to_jdk」を実際のJDKインストールパスに置き換えます)。 bashCopy コードexport JAVA_HOME=your_path_to_jdk export PATH=$JAVA_HOME/bin:$PATH
      3. 「Ctrl + X」を押して終了し、「Y」を押して変更を保存します。 最後に、変更を有効にするために入力します。source ~/.bashrc
  4. JDK のインストールの確認: JDK が正しくインストールおよび構成されていることを確認するには、コマンド・プロンプトまたはターミナルで次のように入力します。
軍亭

続けてください

命令:

Copy codejava -version

そして:

Copy codejavac -version

これらのコマンドが Java および Javac のバージョン情報を正しく表示する場合、JDK は正常にインストールおよび構成されています。 たとえば、出力は次のようになります。

scssCopy codejava version "1.8.0_301"
Java(TM) SE Runtime Environment (build 1.8.0_301-b09)
Java HotSpot(TM) 64-Bit Server VM (build 25.301-b09, mixed mode)
Copy codejavac 1.8.0_301

上記の手順を完了すると、JDK が正常にインストールおよび構成されます。 次に、Struts 開発環境をセットアップし、必要なライブラリーとツール (Apache Tomcat サーバー、IDE など) をインストールし、Struts フレームワークに基づく Web アプリケーションの開発を開始できます。

軍亭

Struts 開発環境用の Eclipse IDE のインストールと構成について詳しく説明してください

Eclipse IDEは、Javaやその他のプログラミング言語で広く使用されている人気のある強力な統合開発環境です。 Struts 開発環境に Eclipse IDE をインストールして構成するには、以下のステップに従ってください。

  1. Eclipse IDEのダウンロード:Eclipseの公式Webサイト(https://www.eclipse.org/downloads/)にアクセスして、最新バージョンのEclipse IDEインストールパッケージをダウンロードしてください。 オペレーティングシステム(Windows、macOS、Linuxなど)とシステムアーキテクチャ(32ビットまたは64ビット)に一致するバージョンを選択します。
  2. Eclipse IDE をインストールするには、次のようにします。
    • Windows および Linux: ダウンロードしたインストール パッケージを適切なフォルダーに抽出します。 抽出したフォルダ内の “eclipse.exe” (Windows) または “eclipse” (Linux) をダブルクリックして Eclipse を起動します。
    • macOS:ダウンロードしたインストールパッケージを解凍し、Eclipse.app をアプリケーションフォルダにドラッグアンドドロップします。 Eclipse.app をダブルクリックして Eclipse を起動します。
  3. Eclipse IDE を構成する: Eclipse を初めて起動すると、ワークスペースを選択するように求められます。 ワークスペースは、プロジェクト ファイルと構成情報を格納するフォルダーです。 ワークスペースに適した場所を選択し、[開始] をクリックします。
  4. Web Tools Platform (WTP) のインストール: Eclipse で Struts ベースの Web アプリケーションを開発するには、Web Tools Platform (WTP) をインストールする必要があります。 WTPは、Webアプリケーションの開発をサポートするために使用されるツールとプラグインのセットです。 WTP をインストールするには、次の手順に従います。
    1. Eclipse メニューバーで、[ヘルプ] > [新しいソフトウェアのインストール] を選択します。
    2. 「使用可能なソフトウェア」ウィンドウで、「操作」ドロップダウン・リストから「公式 Eclipse 更新サイト (通常は http://download.eclipse.org/releases/ バージョン番号に似た URL)」を選択します。
    3. 以下のリストで、Web、XML、Java EE、および OSGi Enterprise Development カテゴリを展開します。
    4. 「Eclipse Java EE 開発者ツール」チェック・ボックスおよび「Eclipse Java Web 開発者ツール」チェック・ボックスを選択し、「次へ」をクリックします。
    5. プロンプトに従って、インストールプロセスを完了します。 インストールが完了したら、Eclipse を再起動します。
  5. Apache Tomcat サーバーを構成する: Eclipse で Struts アプリケーションを実行およびデバッグするには、Apache Tomcat などの Web サーバーを構成する必要があります。 公式サイト(https://tomcat.apache.org/)からApache Tomcatをダウンロードしてインストールしてください。 次に、以下のステップに従って、Eclipse で Tomcat を構成します。
    1. Eclipse メニューバーで、「ウィンドウ> 環境設定」(macOS では Eclipse> 環境設定)を選択します。
    2. 「設定」ウィンドウで、「サーバー>ランタイム環境」を展開し、「追加」ボタンをクリックします。 3
軍亭

続けてください

  1. 「サーバー・ランタイム環境の追加」ウィンドウで、Apache Tomcat のバージョン (インストールしたバージョンと一致する) を選択し、「次へ」をクリックします。
  2. Apache Tomcat がインストールされているディレクトリーを参照し、「完了」をクリックします。
  3. [設定]ウィンドウで、[適用]ボタンと[OK]ボタンをタップして設定を保存します。
  4. Struts プロジェクトの作成: Eclipse IDE を構成したので、Struts ベースの Web アプリケーション・プロジェクトの作成を開始できます。 以下の手順に従います。
    1. Eclipse メニューバーで、[ファイル]、[新規作成> その他] > を選択します。
    2. [新規作成] ウィンドウで、[Web] カテゴリを展開し、[動的 Web プロジェクト] を選択して、[次へ] をクリックします。
    3. プロジェクト名を入力し、ターゲットランタイム(つまり、以前に構成したApache Tomcatサーバー)を選択し、動的WebモジュールのバージョンがStrutsバージョンと互換性があることを確認します(通常は2.5以降を選択します)。
    4. プロンプトに従って、プロジェクトの作成プロセスを完了します。
  5. Struts ライブラリーの追加: プロジェクトで Struts フレームワークを使用するには、Struts ライブラリー (JAR ファイル) をプロジェクトのクラスパスに追加する必要があります。 必要なJARファイルは、Strutsの公式Webサイト(https://struts.apache.org/download.html)からダウンロードするか、MavenやGradleなどのビルドツールを使用して依存関係を管理できます。
    1. Eclipse でプロジェクト名を右クリックし、「プロパティー」を選択します。
    2. 「プロパティー」ウィンドウで、「Java ビルドパス」を選択し、「ライブラリ」タブをクリックします。
    3. 「外部 JAR の追加」ボタンをクリックし、Struts ライブラリーを含むフォルダーを参照し、すべての JAR ファイルを選択して「開く」をクリックします。
    4. [プロパティ]ウィンドウで、[適用]ボタンと[OK]ボタンをクリックして設定を保存します。

これで、Eclipse IDE が正常にインストールおよび構成されたので、Struts フレームワークに基づく Web アプリケーションの開発を開始する準備が整いました。 プロジェクトを作成するときは、Struts の機能を使用するために、必ず Struts ライブラリーをプロジェクトのクラスパスに追加してください。 同時に、Apache Tomcat サーバーを構成して、Eclipse でアプリケーションを簡単に実行およびデバッグできるようにします。

軍亭

ストラット開発環境用のTomcatサーバーのインストールと構成について詳しく説明してください

Apache Tomcat Server は、Java Web アプリケーションをデプロイするための人気のあるオープンソース Web サーバーです。 以下は、Apache Tomcat サーバーをインストールして構成するための手順の詳細な説明です。

  1. Apache Tomcatのダウンロード:Apache Tomcatの公式Webサイト(https://tomcat.apache.org/)にアクセスして、ニーズと開発環境に一致するTomcatのバージョンを選択してください。 通常は、最新の安定バージョン (Tomcat 9 や Tomcat 10 など) を選択します。 zip (Windows) ファイルや tar.gz (macOS および Linux) ファイルなど、対応するバージョンのバイナリ ディストリビューションをダウンロードします。
  2. Apache Tomcat のインストール: ダウンロードしたパッケージを適切な場所に解凍します。 抽出されたフォルダは、Tomcat のインストールディレクトリです。 このパスは、後続の構成に使用されることに注意してください。
  3. 環境変数の構成 (オプション): コマンド ラインから Tomcat サーバーを便利に起動および停止するために、Tomcat の bin ディレクトリをシステムの PATH 環境変数に追加できます。 詳細については、JDK での環境変数の構成に関する前のセクションを参照してください。 Tomcat の場合、そのビンディレクトリパスをシステムの PATH 環境変数に追加する必要があります。
  4. Tomcat サーバーをテストする: Tomcat サーバーを起動して、正しくインストールされていることをテストします。
    • Windows:インストールディレクトリの下のbinフォルダにある「startup.bat」ファイルをダブルクリックします。
    • macOSおよびLinux:ターミナルで、インストールディレクトリの下のbinフォルダーに移動し、コマンドを実行します。./startup.sh
    起動が成功すると、Web ブラウザーを使用して、Apache Tomcat のウェルカム ページが表示されます。 Tomcat サーバーを停止するには、適切な “shutdown.bat” (Windows) または (macOS および Linux) スクリプトを実行します。http://localhost:8080./shutdown.sh
  5. Eclipse で Tomcat サーバーを構成する: Eclipse IDE で Tomcat サーバーを構成するには、前の回答の「Apache Tomcat サーバーの構成」セクションを参照してください。

上記の手順を完了すると、Apache Tomcatサーバーが正常にインストールおよび構成されました。 次に、Eclipse IDE を使用して、Struts フレームワークに基づく Web アプリケーションを開発、デプロイ、および実行できます。

軍亭

簡単なStrutsプロジェクトの作成方法を詳しく説明してください

単純な Struts ベースの Web アプリケーション・プロジェクトを作成するには、以下のステップに従います。

  1. 開発環境を構成する: JDK、Eclipse IDE、および Apache Tomcat サーバーがインストールされ、構成されていることを確認します。 これらの手順は、以前の回答で詳しく説明されています。
  2. 新しい動的 Web プロジェクトを作成します。
    • Eclipse IDE を開き> 新規>その他…をクリックします。
    • [新規作成] ダイアログ ボックスで、[Web] カテゴリを展開し、[ダイナミック Web プロジェクト] を選択して、[次へ] をクリックします。
    • プロジェクトの名前を入力し、以前に構成したターゲット・ランタイム (Apache Tomcat サーバー) を選択し、動的 Web モジュール・バージョンが Struts バージョン (通常は 2.5 以降を選択) と互換性があることを確認します。
    • プロンプトに従って、プロジェクトの作成プロセスを完了します。
  3. Struts ライブラリの追加: Struts の公式 Web サイト (https://struts.apache.org/download.html) から必要な JAR ファイルをダウンロードするか、Maven や Gradle などのビルドツールを使用して依存関係を管理します。 次の JAR ファイルをプロジェクトのクラスパスに追加します。
    • Eclipse でプロジェクト名を右クリックし、「プロパティー」を選択します。
    • 「プロパティー」ウィンドウで、「Java ビルドパス」を選択し、「ライブラリ」タブをクリックします。
    • 「外部 JAR の追加」ボタンをクリックし、Struts ライブラリーを含むフォルダーを参照し、すべての JAR ファイルを選択して「開く」をクリックします。
    • [プロパティ]ウィンドウで、[適用]ボタンと[OK]ボタンをクリックして設定を保存します。
  4. Struts コア・コンポーネントを作成するには、以下のようにします。
    • ActionForm: src ディレクトリに Java クラスを作成し、org.apache.struts.action.ActionForm を継承します。
    • アクション: src ディレクトリに Java クラスを作成し、org.apache.struts.action.Action を継承します。 execute() メソッドをオーバーライドして、ビジネスロジックを処理します。
    • JSP ビュー: 結果を表示するために、WebContent ディレクトリに新しい JSP ファイルを作成します。
  5. struts-config .xmlの構成: struts-config.xml というファイルを WEB-INF ディレクトリーに作成して、Struts のコア・コンポーネントを構成します。 このファイルで、ActionForms、アクション、およびそれらの間のマッピング関係を定義します。
  6. Web.xmlの構成: WEB-INF ディレクトリー内の web.xml ファイルで、ストラット・コア・コントローラーの ActionServlet およびストラット構成.xmlへのパスを構成します。
  7. プロジェクトをデプロイして実行するには:
    • Eclipse で、プロジェクトを右クリックし、「別のユーザーとして実行> サーバー上で実行」を選択します。
    • 表示されるダイアログボックスで、前に構成した Apache Tomcat サーバーを選択し、「完了」をクリックします。
    • Eclipse がプロジェクトをデプロイして起動し、Web ブラウザーが自動的にプロジェクトのホームページを開きます。

上記の手順を実行すると、単純な Struts ベースの Web アプリケーション・プロジェクトが正常に作成され、実行されます。 実際の開発プロセスでは、プロジェクトのニーズに応じてカスタマイズおよび拡張する必要があります。

軍亭

アクションフォームクラスの書き方を詳しく説明してください

ActionFormStruts クラスは、フォームからのデータをカプセル化して処理する Struts フレームワークのコア・コンポーネントです。 クラスを作成するときは、クラスを継承し、フォーム内の各フィールドに対応するプロパティとゲッター/セッターメソッドを作成する必要があります。ActionFormorg.apache.struts.action.ActionForm

クラスを作成する手順は次のとおりです。ActionForm

  1. Eclipse IDE プロジェクトで、ディレクトリに新しい Java クラスを作成します。 たとえば、という名前のクラスを作成します。srcMyForm
  2. クラスを継承するようにクラスを変更します。 必要なパッケージ () をインポートして、クラス名参照の問題を解決します。MyFormorg.apache.struts.action.ActionFormorg.apache.struts.action.ActionForm
  3. フォームの各フィールドに適切なプロパティを作成します。 たとえば、フォームに Enterbox という名前の入力ボックスが含まれている場合は、クラスに One という名前のプロパティを作成します。usernameMyFormusername
  4. getter メソッドと setter メソッドは、プロパティごとに生成されます。 Eclipse では、コード・エディターを右クリックし、「ソース」>「ゲッターとセッターの生成…」を選択することで、これらのメソッドを自動的に生成できます。 これらのメソッドは、フォームと Java クラスの間でデータを渡すために使用されます。
  5. 必要に応じて、メソッドをオーバーライドして、カスタム フォーム検証ロジックを実装します。 Validate メソッドは、検証中に検出されたすべてのエラーを含むオブジェクトを返します。 エラーが見つからない場合は、空のオブジェクトが返されます。 メソッドを使用して、カスタム エラー情報を追加できます。validate()validate()org.apache.struts.action.ActionErrorsActionErrorsaddError()

簡単なクラスの例を次に示します。ActionForm

javaCopy codeimport org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionErrors;
import org.apache.struts.action.ActionError;

public class MyForm extends ActionForm {
    private String username;
    private String email;

    public String getUsername() {
        return username;
    }

    public void setUsername(String username) {
        this.username = username;
    }

    public String getEmail() {
        return email;
    }

    public void setEmail(String email) {
        this.email = email;
    }

    @Override
    public ActionErrors validate(org.apache.struts.action.ActionMapping mapping, javax.servlet.http.HttpServletRequest request) {
        ActionErrors errors = new ActionErrors();
        if (username == null || username.trim().isEmpty()) {
            errors.add("username", new ActionError("error.username.required"));
        }
        if (email == null || email.trim().isEmpty()) {
            errors.add("email", new ActionError("error.email.required"));
        }
        return errors;
    }
}

この例では、2つのプロパティを定義し、これら2つのプロパティのゲッターメソッドとセッターメソッドを生成します。 また、AND フィールドが空でないことを確認するためにメソッドをオーバーライドしました。 エラーが見つかった場合は、適切なエラー情報がオブジェクトに追加されます。usernameemailvalidate()usernameemailActionErrors

軍亭

続けてください

次に、先ほど作成したクラスを使用して他の Struts フレームワーク・コンポーネントと対話する方法について説明します。ActionForm

  1. JSP フォームページを作成する:次のようなディレクトリの下に新しい JSP ファイルを作成します。 このページでフォームを作成し、タグを使用してクラスに関連付けます。 タグを使用するには、Struts タグライブラリをインポートし、JSP ページの先頭に次のコードを追加する必要があります。 jspCopy コードは、次のようにフォームを作成します。 jspCopy コード 上記の例では、タグを使用してフォームを作成し、そのプロパティをに設定します。 また、ラベル付きの 2 つの入力ボックスを作成し、それらのプロパティをそれぞれ と に設定しました。 これらのプロパティは、クラス内の対応するプロパティにバインドされます。WebContentindex.jsp<html:form>ActionForm<html:form><%@ taglib uri="http://struts.apache.org/tags-html" prefix="html" %> <html:form action="/submitForm"> <table> <tr> <td>Username:</td> <td><html:text property="username" /></td> </tr> <tr> <td>Email:</td> <td><html:text property="email" /></td> </tr> <tr> <td colspan="2" align="center"> <html:submit value="Submit" /> </td> </tr> </table> </html:form> <html:form>action/submitForm<html:text>propertyusernameemailActionForm
  2. クラスの作成: 次のようなディレクトリに新しい Java クラスを作成します。 クラスを継承し、メソッドをオーバーライドします。 このメソッドでは、オブジェクトを使用してフォームによって送信されたデータを取得し、対応するビジネス ロジックを処理できます。 例: ジャバコピーコードActionsrcMyActionorg.apache.struts.action.Actionexecute()execute()ActionFormimport org.apache.struts.action.Action; import org.apache.struts.action.ActionForm; import org.apache.struts.action.ActionForward; import org.apache.struts.action.ActionMapping; public class MyAction extends Action { @Override public ActionForward execute(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) { MyForm myForm = (MyForm) form; String username = myForm.getUsername(); String email = myForm.getEmail(); // 处理业务逻辑,如将数据存储到数据库或发送电子邮件等。 return mapping.findForward("success"); } }
  3. プロファイル: ディレクトリの下にファイルを作成または編集します。 クラスを適切なパスにマップします。 次に例を示します。 xmlCopy コードstruts-config.xmlWEB-INFstruts-config.xmlActionFormAction<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE struts-config PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 1.3//EN" "http://struts.apache.org/dtds/struts-config_1_3.dtd"> <struts-config> <form-beans> <form-bean name="myForm" type="com.example.MyForm" />
軍亭

続けてください

phpCopy code   </form-beans>
   <action-mappings>
       <action path="/submitForm" type="com.example.MyAction" name="myForm" scope="request" validate="true" input="/index.jsp">
           <forward name="success" path="/success.jsp" />
       </action>
   </action-mappings>

</struts-config> “‘

上記の例では、最初にセクションでクラスを定義し、次にセクション内のパスのマッピングを定義しました。 このマッピングは、クラスをクラスに関連付け、フォームの検証を設定します。 検証に失敗した場合は、プロパティで指定されたページに返されます。 メソッドが成功を返す場合は、ページに転送されます。<form-beans>MyForm<action-mappings>/submitFormActionMyActionMyFormtrueinput/index.jspexecute()/success.jsp

  1. 構成ファイル: ディレクトリー内のファイルで、Struts コア・コントローラーとそのパスを構成します。 例: xmlCopy コード この例では、Struts コア・コントローラーのサーブレットを定義し、それを URL パターンに関連付けます。 また、ファイルの場所も指定します。web.xmlWEB-INFweb.xmlActionServletstruts-config.xml<?xml version="1.0" encoding="UTF-8"?> <web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd" version="4.0"> <display-name>StrutsExample</display-name> <servlet> <servlet-name>action</servlet-name> <servlet-class>org.apache.struts.action.ActionServlet</servlet-class> <init-param> <param-name>config</param-name> <param-value>/WEB-INF/struts-config.xml</param-value> </init-param> <load-on-startup>1</load-on-startup> </servlet> <servlet-mapping> <servlet-name>action</servlet-name> <url-pattern>*.do</url-pattern> </servlet-mapping> <welcome-file-list> <welcome-file>index.jsp</welcome-file> </welcome-file-list> </web-app> ActionServlet*.dostruts-config.xml
  2. 成功ページの作成: 操作の成功を示すメッセージなど、新しい JSP ページを作成します。 たとえば、jspCopy コードsuccess.jsp<!DOCTYPE html> <html> <head> <title>Success</title> </head> <body> <h1>Form submitted successfully!</h1> </body> </html>
  3. プロジェクトをデプロイして実行する: Eclipse でプロジェクトを右クリックし、「別のユーザーとして実行> サーバー上で実行」を選択します。 前に構成した Apache Tomcat サーバーを選択し、[完了] をクリックします。 Eclipse がプロジェクトをデプロイして起動し、Web ブラウザーが自動的にプロジェクトのホームページを開きます。

上記の手順の後、次のような単純な Struts アプリケーションを作成しました。

軍亭

続けてください

フォームを送信する JSP ページ、フォームデータを処理するクラス、ビジネスロジックを処理するクラス、および成功ページが含まれます。 ユーザーがページにデータを入力してフォームを送信すると、Struts フレームワークはフォーム・データをクラスにカプセル化し、クラスに渡します。 その後、クラスはビジネス ロジックを処理し、適切なビューを返します。ActionFormActionindex.jspActionFormActionAction

次に、次のような Struts フレームワークのその他の機能を調べることができます。

  1. ラベルを使用して、フォーム検証エラー メッセージを表示します。<html:errors>
  2. 国際化サポートを使用して、多言語アプリケーションを作成します。
  3. Struts レイアウト・タグ・ライブラリー (, , など) を使用して、複雑なページ・レイアウトを作成します。<html:table><html:row><html:cell>
  4. Struts ロジック・タグ・ライブラリー (, など) を使用して、条件付きロジックと循環ロジックを JSP ページに追加します。<logic:iterate><logic:equal>
  5. Struts プラグイン (タイルプラグイン、バリデータープラグインなど) を使用して、フレームワーク機能を拡張します。
  6. Struts を使用して、JDBC、JPA、EJB、Spring などの他の Java EE テクノロジーと統合し、より複雑な Web アプリケーションを構築します。

これらの高度な機能を学び、実践することで、Strutsフレームワークをよりよく理解し、実際のプロジェクトでその強みを使用できるようになります。

軍亭

アクションクラスの書き方を詳しく説明してください

Actionクラスは Struts フレームワークのコア・コンポーネントの 1 つであり、ユーザー要求からのビジネス・ロジックを処理するために使用されます。 クラスを記述するときは、クラスを継承し、メソッドをオーバーライドする必要があります。 このメソッドは、次のパラメーターを受け取ります。Actionorg.apache.struts.action.Actionexecute()execute()

  1. ActionMapping: パス、名前などを含む現在のマッピング情報。ActionAction
  2. ActionForm: フォーム送信からのデータをカプセル化するフォーム Bean。
  3. HttpServletRequest: ユーザーが要求した HTTP 情報を表します。
  4. HttpServletResponse: ユーザーの要求に対するアプリケーションの HTTP 応答を表します。

クラスを作成する手順は次のとおりです。Action

  1. Eclipse IDE プロジェクトで、ディレクトリに新しい Java クラスを作成します。 たとえば、という名前のクラスを作成します。srcMyAction
  2. クラスを継承するようにクラスを変更します。 必要なパッケージ () をインポートして、クラス名参照の問題を解決します。MyActionorg.apache.struts.action.Actionorg.apache.struts.action.Action
  3. メソッドをオーバーライドします。 このメソッド内では、フォーム データを取得し、ビジネス ロジックを処理し、適切なビューを返すことができます。 例えば:execute()
javaCopy codeimport org.apache.struts.action.Action;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;

public class MyAction extends Action {
    @Override
    public ActionForward execute(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) {
        MyForm myForm = (MyForm) form;
        String username = myForm.getUsername();
        String email = myForm.getEmail();

        // 处理业务逻辑,如将数据存储到数据库或发送电子邮件等。

        return mapping.findForward("success");
    }
}

上記の例では、最初にオブジェクトをカスタム型に変換します。 次に、フォームによって送信されたデータ (フィールドなど) をオブジェクトから取得します。 その後、データベースへのデータの保存や電子メールの送信など、実際のニーズに基づいてビジネスロジックを処理できます。 最後に、処理結果に基づいて適切なビュー (成功ページやエラー ページなど) が返されます。ActionFormMyFormMyFormusernameemail

  1. ファイル内のクラスを構成します。 クラスを適切なパスにマップし、適切なフォーム Bean を関連付けます。 例えば:struts-config.xmlActionAction
xmlCopy code<action-mappings>
    <action path="/submitForm" type="com.example.MyAction" name="myForm" scope="request" validate="true" input="/index.jsp">
        <forward name="success" path="/success.jsp" />
    </action>
</action-mappings>

上記の例では、パスをクラスにマップし、それをフォームBeanに関連付けました。 また、フォームの検証を設定し、検証が失敗した場合に返される入力ページと、メソッドが正常に返された場合のビューパスを指定します。/submitFormMyActionMyFormexecute()

上記の手順で、簡単なクラスを作成し、他のStrutsフレームワークコンポーネントと対話する方法を学習しました。Action

軍亭

続けてください

次に、クラス関連の高度なトピックをいくつか調べて、それらの使用方法をよりよく理解できるようにします。Action

  1. 動的メソッド呼び出し: デフォルトでは、Struts はクラス内のメソッドを呼び出して要求を処理します。 ただし、動的メソッド呼び出し機能を使用して、Struts にクラス内の他のメソッドを呼び出させることもできます。 これを実現するには、でプロパティを構成し、クラスに適切なメソッドを実装する必要があります。 たとえば、xmlCopy コードを使用してから、次のクラスにメソッドを実装します。Actionexecute()Actionstruts-config.xmlActionmethodAction<action path="/submitForm" type="com.example.MyAction" method="myCustomMethod" name="myForm" scope="request" validate="true" input="/index.jsp"> <forward name="success" path="/success.jsp" /> </action> MyActionmyCustomMethod()public class MyAction extends Action { public ActionForward myCustomMethod(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) { // ... } }
  2. フォーム検証エラーの処理: フォーム検証が有効になっている場合、Struts はクラスを呼び出す前にフォームデータを検証します。 検証に失敗した場合、Struts は入力ページに戻り、エラー情報をオブジェクトに保存します。 JSP ページでタグを使用して、エラーメッセージを表示できます。 たとえば、クラス内の jspCopy コードをページに追加し、メソッドを使用してカスタム エラー情報をオブジェクトに保存することもできます。 例: ジャバコピーコードActionActionErrors<html:errors>index.jsp<html:errors/> ActionsaveErrors(request, errors)ActionErrorspublic class MyAction extends Action { @Override public ActionForward execute(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) { MyForm myForm = (MyForm) form; // 检查用户名和电子邮件 if (myForm.getUsername().isEmpty() || myForm.getEmail().isEmpty()) { ActionErrors errors = new ActionErrors(); errors.add("emptyFields", new ActionMessage("error.empty.fields")); saveErrors(request, errors); return mapping.getInputForward(); } // ... } }
  3. 使用: クラスでは、オブジェクトを使用して、転送またはリダイレクト先のビューを定義できます。 オブジェクトは、オブジェクトのメソッドを使用して取得することも、新しいオブジェクトを直接作成することもできます。 たとえば、(転送ではなく)リダイレクトを実行するためのjavaCopyコードでは、オブジェクトの作成時にそのプロパティを次のように設定する必要があります。ActionForwardActionActionForwardActionForwardActionMappingfindForward()ActionForwardpublic class MyAction extends Action { @Override public ActionForward execute(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) { // ... ActionForward successForward = mapping.findForward("success"); // 或 ActionForward successForward = new ActionForward("/success.jsp"); return successForward; } } ActionForwardredirecttrueActionForward redirectForward = new ActionForward("/success.jsp", true);

クラスとその関連機能についての洞察を得ることで、より効果的になることができますAction

軍亭

続けてください

Struts フレームワークを使用して、ビジネス・ロジックを処理します。 実際のプロジェクトに適用できるその他の高度な概念を次に示します。

  1. 使用および: [エラー メッセージの保存] を使用するだけでなく、[成功の保存] または通知メッセージを使用することもできます。 同様に、クラス内のメソッドを使用して、メッセージをオブジェクトに保存できます。 「JSP」ページで、ラベルを使用してメッセージを表示します。 たとえば、次のコードをページに追加します。ActionMessagesActionErrorsActionErrorsActionMessagesActionErrorsActionsaveMessages(request, messages)ActionMessages<html:messages>success.jsp<html:messages/>
  2. 他のJava EEテクノロジーとの統合:実際のプロジェクトでは、他のJava EEテクノロジー(JDBC、JPA、EJB、Springなど)を使用してStrutsフレームワークと統合する必要がある場合があります。 たとえば、クラスでデータアクセスオブジェクト (DAO) を呼び出してデータベースからデータを取得したり、Spring Bean を呼び出してそのサービスを利用したりできます。 クラスの責任を単一に保ち、複雑なビジネス・ロジックをクラス内で直接実行しないようにするには、ビジネス・ロジックを他の特殊なサービス・クラスに委任する必要があります。ActionActionAction
  3. インターセプターの使用: Struts 2 では、インターセプターを使用してリクエストの前処理と後処理を行うことができます。 インターセプターは、要求がクラスに到達する前、またはクラスが結果を返した後にロジックを実行するためのメカニズムです。 インターセプターを使用すると、クラスを変更することなく、横断的な問題 (ログ記録、認証、承認など) を実装できます。 Struts 2 でインターセプターを使用するには、インターフェースを実装し、インターセプターをファイルに構成する必要があります。ActionActionActionInterceptorstruts.xml

これらの高度な概念を学び、実践することで、Strutsフレームワークをよりよく理解し、実際のプロジェクトでその機能を最大限に活用することができます。 より強力なJava Web開発者になるために、スキルを継続的に向上させてください。

軍亭

ストラットコンフィグ.xmlの設定方法を詳しく説明してください

struts-config.xmlファイルは Struts フレームワークの主要な構成ファイルであり、クラス間の関係を定義し、Bean、ビュー、およびその他のコンポーネントを形成します。 構成ファイルの一般的な要素と使用法を次に示します。Actionstruts-config.xml

  1. ファイルの作成: プロジェクトのディレクトリに という名前のファイルを作成します。 単純なファイルの例を次に示します。 xmlCopy コードstruts-config.xmlWEB-INFstruts-config.xmlstruts-config.xml<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE struts-config PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 1.3//EN" "http://struts.apache.org/dtds/struts-config_1_3.dtd"> <struts-config> <!-- 配置元素将在下面详细解释 --> </struts-config>
  2. フォーム Bean の構成: 要素を使用して、プロジェクトで使用するフォーム Bean を定義します。 各要素には、ファイル内のフォーム Bean を参照する属性と、フォーム Bean の完全なクラス名を指定する属性が含まれている必要があります。 次に例を示します。 xmlCopy コード<form-beans><form-bean>namestruts-config.xmltype<form-beans> <form-bean name="myForm" type="com.example.MyForm"/> </form-beans>
  3. 構成マッピング: 要素を使用して、プロジェクトで使用されるクラスを定義します。 各要素には、次の属性が含まれている必要があります。Action<action-mappings>Action<action>
    • path: URL でクラスを参照するために使用されるパス。Action
    • type: クラスの完全なクラス名を指定します。Action
    • name: クラスに関連付けられたフォーム Bean の名前を指定します (オプション)。Action
    • scope: フォーム Bean の有効範囲 (またはオプションで) を指定します。requestsession
    • validate: フォーム Bean を検証するかどうかを指定します (オプション、デフォルト)。true
    • input: フォームの検証が失敗した場合に返される入力ページを指定します (オプション)。
    要素内では、要素を使用して、クラスの実行後にビューを定義します。 各要素には、属性 (クラス内のビューを参照するために使用) と属性 (ビューの JSP ファイルパスを指定) が含まれている必要があります。 次に例を示します。 xmlCopy コード<action><forward>Action<forward>nameActionpath<action-mappings> <action path="/submitForm" type="com.example.MyAction" name="myForm" scope="request" validate="true" input="/index.jsp"> <forward name="success" path="/success.jsp"/> </action> </action-mappings>
  4. メッセージ リソースの構成: 要素を使用して、プロジェクトで使用されるメッセージ リソース ファイルを定義します。 メッセージ・リソース・ファイルは、エラー・メッセージ、プロンプトなどのアプリケーションの国際化テキストを格納するために使用されます。 例: xmlCopy コード 上記の例では、このプロパティはメッセージ リソース ファイルの基本名を指定します (言語コードと<message-resources><message-resources parameter="com.example.messages"/> parameter
軍亭

続けてください

ファイル名拡張子)。 メッセージ・リソース・ファイルがベース名を持つパッケージの下にあると仮定すると、英語環境用の名前のファイルおよび中国語環境用の名前のファイルを作成する必要があります。com.examplemessagesmessages_en.propertiesmessages_zh.properties

  1. プラグインの構成: 要素を使用して、プロジェクトで使用される Struts プラグインを構成します。 プラグインは、追加のタグライブラリの提供や他のフレームワークの統合など、Struts フレームワークの機能を拡張できます。 たとえば、Tiles プラグイン (ページ レイアウト用) を構成するには、次のコードをファイルに追加する必要があります。 xmlCopy コード 上記の例では、プロパティはプラグインクラスの完全なクラス名を指定します。 要素は、プラグインのプロパティを設定するために使用されます(この場合、Tiles定義ファイルへのパスが指定されます)。<plug-in>struts-config.xml<plug-in className="org.apache.struts.tiles.TilesPlugin"> <set-property property="definitions-config" value="/WEB-INF/tiles-defs.xml"/> </plug-in> className<set-property>
  2. 他のコンポーネントを構成する: ファイルは、グローバル例外ハンドラー、グローバル転送、コントローラーのプロパティなどの他のコンポーネントを構成することもできます。 グローバル例外ハンドラーを構成する例を次に示します。 xmlCopy コード 上記の例では、このプロパティは、キャッチする例外の種類、メッセージ リソース ファイル内のエラー メッセージ キー、および例外が処理されたときに表示するページを指定します。struts-config.xml<global-exceptions> <exception type="java.lang.Exception" key="error.global" path="/error.jsp"/> </global-exceptions> typekeypath

適切なプロファイルを使用すると、Struts アプリケーション全体の動作を管理および制御できます。 プロジェクト コンポーネントをより適切に整理および管理するために、プロジェクト開発中にこのファイルを慎重に管理することが重要です。struts-config.xml

軍亭

Strutsの組み込み検証フレームワークの紹介について詳しく教えてください

Struts 組み込みの検証フレームワークは、ユーザーが送信したフォーム・データの検証に使用できる強力な検証メカニズムです。 フレームワークには、null 以外のチェック、データ型のチェック、長さの制限などの一般的な検証ニーズを簡単に実装できる定義済みの検証規則のセットが用意されています。 さらに、特定のニーズに合わせて入力規則をカスタマイズできます。

Struts の組み込み検証フレームワークの主なコンポーネントと使用法は次のとおりです。

  1. 検証規則ファイル (): 検証する必要があるフォーム Bean ごとに、対応する検証規則ファイルを作成する必要があります。 検証規則ファイルの命名規則は、フォーム Bean クラス名 + です。 たとえば、 という名前のフォーム Bean の場合、検証規則ファイルの名前は にする必要があります。 検証規則ファイルは、通常、フォーム Bean クラスと同じパッケージの下にあります。 検証規則ファイルの基本構造は次のとおりです。 xmlCopy コード*_validation.xml_validation.xmlLoginFormLoginForm_validation.xml<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE form-validation PUBLIC "-//Apache Software Foundation//DTD Commons Validator Rules Configuration 1.3.0//EN" "http://jakarta.apache.org/commons/dtds/validator_1_3_0.dtd"> <form-validation> <formset> <!-- 验证规则将在下面详细解释 --> </formset> </form-validation>
  2. 検証規則を構成する: 要素内で、要素を使用して、フォーム Bean の各属性の検証規則を定義します。 このエレメントには、検証するフォーム Bean プロパティーの名前を指定する属性が含まれている必要があります。 要素内で、要素を使用して特定の検証規則を定義します。 たとえば、null 以外の検証をクラスのプロパティに追加します。 xmlCopy コード 上記の例では、属性は検証規則の種類 (null 以外の検証を示す) を指定し、要素の属性はメッセージ リソース ファイル内のエラー メッセージ キーを指定します。<formset><field><field>property<field><field-validator>LoginFormusername<field property="username"> <field-validator type="required"> <message key="error.username.required"/> </field-validator> </field> typerequired<message>key
  3. 事前定義された検証ルール: Struts 検証フレームワークは、検証ルール・ファイルで直接使用できる事前定義された検証ルールのセットを提供します。 一般的に使用される定義済みの検証ルールを次に示します。
    • required: null 以外の検証
    • minlength: 最小長の検証
    • maxlength: 最大長の検証
    • email: メール形式の検証
    • integer: 整数検証
    • double: 浮動小数点数の検証
    • date: 日付の検証
    • url: URL の検証
  4. カスタム検証ルール: 定義済みの検証ルールがニーズに合わない場合は、カスタム検証ルールを作成できます。 カスタム検証ルールを作成するには、次の手順を実行する必要があります。
    • インターフェースを実装する Java クラスを作成します。org.apache.struts.validator.Validator
    • コモンズで
軍亭

続けてください

この会話で使用された以前のモデルは使用できません。最新のデフォルトモデルに切り替えました

-validator.xml ファイルを使用して、カスタム検証ルールの構成を追加します。 このファイルはプロジェクトのクラスパスの下にあり、Struts 検証フレームワークのグローバル設定とカスタム検証規則を構成するために使用されます。 カスタム検証ルールを追加する例を次に示します。

xmlCopy code<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE validators PUBLIC "-//Apache Struts//XWork Validator Config 1.0//EN" "http://struts.apache.org/dtds/xwork-validator-config-1.0.dtd">
<validators>
    <validator name="myValidator" class="com.example.MyValidator"/>
</validators>

上記の例では、要素の属性は検証規則名を指定し、属性は検証規則の完全なクラス名を指定します。<validator>nameclass

カスタム検証規則クラスを記述する場合は、インターフェイスを実装するメソッドが必要です。 このメソッドは、検証する値を表すパラメーターの型を受け取ります。 このメソッドでは、カスタム ロジックを使用して値を検証し、メソッドを呼び出すことで検証結果をオブジェクトに追加できます。 たとえば、ユーザー名が既に存在するかどうかを確認するカスタム検証規則の例を次に示します。org.apache.struts.validator.Validatorvalidate()ObjectaddValidatorResult()ValidatorActionForm

javaCopy codepublic class UsernameExistsValidator implements Validator {
    public void validate(Object object) throws ValidatorException {
        String username = (String) object;
        boolean exists = checkUsernameExists(username);
        if (exists) {
            throw new ValidatorException(new ActionMessage("error.username.exists"));
        }
    }

    private boolean checkUsernameExists(String username) {
        // 检查用户名是否已存在
    }
}

上記の例では、メソッドを使用してユーザー名が既に存在するかどうかを確認し、チェックの結果に基づいて例外をスローします (例外には、メッセージ リソース ファイルで検索できるエラー メッセージ キーが含まれています)。validate()checkUsernameExists()ValidatorException

カスタム検証規則を使用する場合は、検証規則ファイルで参照できます。 たとえば、カスタム検証規則の使用例を次に示します。

xmlCopy code<field property="username">
    <field-validator type="myValidator">
        <message key="error.username.invalid"/>
    </field-validator>
</field>

上記の例では、属性はカスタム検証ルールの名前を指定し、要素の属性はエラーメッセージキーを指定します。type<message>key

フォームデータは、Strutsの組み込み検証フレームワークを使用して簡単に検証できるため、アプリケーションのセキュリティと信頼性が向上します。 検証規則を適切に構成することで、重複するコードとエラーを減らし、プロジェクトの管理と保守を向上させることができます。

軍亭

バリデーションルール(バリデーター)の書き方を詳しく説明してください

Struts では、データの正当性と正確性を保証するために、検証ルールを使用してフォームデータを検証できます。 Struts には、非ヌル検証、長さ検証、データ型検証など、一般的に使用される検証ルールが組み込まれており、カスタム検証ルールを使用して特定のニーズを満たすこともできます。

Struts 検証ルールを記述する手順は次のとおりです。

  1. 検証ルールクラスを作成する: 検証ルールを作成するには、まずJavaクラスを作成し、インターフェイスを実装する必要があります。 インターフェイスには、検証ロジックを実行して検証結果を返すメソッドが 10 つだけあります。 たとえば、ユーザーが入力した数値が 10 以下であることを検証する単純な検証ルール クラスを次に示します。 javaCopy コード 上記の例では、メソッドは最初にリクエストパラメータから入力番号を取得し、次にそれを整数に変換して、それが10より大きいかどうかを確認します。 <> より大きい場合、エラー メッセージがオブジェクトと共に追加されます。 エラーがない場合は、空のオブジェクトが返されます。org.apache.struts.action.Validatorvalidate(ActionMapping, ActionForm, HttpServletRequest)public class LessThanTenValidator implements Validator { public ActionErrors validate(ActionMapping mapping, ActionForm form, HttpServletRequest request) { ActionErrors errors = new ActionErrors(); String numberString = request.getParameter("number"); int number = Integer.parseInt(numberString); if (number > 10) { errors.add("number", new ActionMessage("error.number.greaterThanTen")); } return errors; } } validate()ActionErrorsActionErrors
  2. 入力規則を構成する: ファイルで、要素を使用して入力規則を構成します。 たとえば、上記で作成したクラスを構成するには、次のコードをファイルに追加します。 xmlコードをコピーする 上記の例では、要素の属性は検証規則クラスの完全なクラス名を指定し、属性は検証規則名を指定します。 要素は検証規則のパラメーターを渡すために使用され、要素はエラーメッセージを設定するために使用されます(メッセージリソースファイルでの検索またはハードコーディングされた文字列の使用)。struts-config.xml<validator>LessThanTenValidatorstruts-config.xml<form-beans> <form-bean name="myForm" type="com.example.MyForm"/> </form-beans> <global-exceptions> <exception key="error.exception" type="java.lang.Exception"/> </global-exceptions> <global-forwards> <forward name="error" path="/error.jsp"/> </global-forwards> <action-mappings> <action path="/myAction" name="myForm" type="com.example.MyAction"> <set-property property="property1" value="value1"/> <set-property property="property2" value="value2"/> <forward name="success" path="/success.jsp"/> <forward name="failure" path="/failure.jsp"/> <forward name="error" path="/error.jsp"/> <validator type="com.example.LessThanTenValidator" name="myValidator"> <param name="fieldName">number</param> <message key="error.number.greaterThanTen" resource="false"/> </validator> </action> </action-mappings> <validator>typename<param><message>
  3. 検証データ: ユーザーがフォームを送信すると、検証ルールが実行されます。 存在する場合
軍亭

続けてください

検証エラーは、指定されたエラーパス(要素によって指定)に自動的に移動します。 Action クラスでは、オブジェクトのメソッドを呼び出して検証エラーを確認できます。 検証エラーがある場合は、オブジェクトのメソッドを呼び出してエラー メッセージを要求オブジェクトに保存し、エラー メッセージがページに表示されるようにすることができます。 たとえば、Action クラスの例を次に示します。<forward>ActionErrorsisEmpty()ActionErrorssaveErrors(HttpServletRequest)

javaCopy codepublic class MyAction extends Action {
    public ActionForward execute(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception {
        ActionErrors errors = form.validate(mapping, request);
        if (errors.isEmpty()) {
            // 处理表单数据,执行业务逻辑
            return mapping.findForward("success");
        } else {
            errors.saveErrors(request);
            return mapping.findForward("failure");
        }
    }
}

上記の例では、メソッドを使用してフォームデータの検証を実行し、オブジェクトを返します。 オブジェクトが空の場合、検証エラーはなく、ビジネス ロジックを実行して、成功パス (要素によって指定) を返すことができます。 検証エラーがある場合は、メソッドを使用してエラー メッセージを要求オブジェクトに保存し、エラー パスを返します。form.validate(mapping, request)ActionErrors<forward>errors.saveErrors(request)

Struts の検証ルールを使用すると、フォームデータを簡単に検証して、データの正当性と正確性を確認できます。 検証規則を適切に構成することで、重複するコードとエラーを減らし、プロジェクトの管理と保守を向上させることができます。

軍亭

エラーメッセージを国際化する方法を詳しく説明してください

Struts では、エラー・メッセージをプロパティー・ファイルに保管し、リソース・バンドル・メカニズムを使用してそれらを国際化し、異なるエラー・メッセージが異なるロケールで表示されるようにすることができます。 Struts で国際化エラーメッセージを実装する手順は次のとおりです。

  1. リソース パッケージを作成する: プロジェクト ディレクトリに という名前のフォルダーを作成し、このフォルダーに名前のファイルを作成して、英語のエラー メッセージを保存します。 例: vbnetCopy code 上記の例では、3 つの英語のエラー メッセージがキーと値のペアの形式で保存されています。 他の言語のエラー メッセージを追加するには、フォルダーの下に言語関連のサブフォルダー (簡体字中国語) や (フランス語) など) を作成します。 次に、このサブフォルダーの下に名前の付いたファイルを作成し、対応する言語のエラーメッセージを追加します。 たとえば、フォルダーの下に作成されたファイルに、以下を追加できます。 goコードをコピーする 上記の例では、英語のエラー メッセージと同じ中国語のエラー メッセージが保存されます。srcresourcesmessages.propertieserror.required=This field is required. error.email=Invalid email address. error.length=The length of the field must be between {0} and {1}. resourceszh_CNfr_FRmessages.propertieszh_CNmessages.propertieserror.required=该字段是必需的。 error.email=无效的电子邮件地址。 error.length=字段的长度必须介于{0}和{1}之间。
  2. リソースバンドルの設定: ファイル内で、要素を使用してリソースバンドルを設定します。 例: xmlCopy コード 上記の例では、プロパティはリソースバンドルへの相対パスを指定します。struts-config.xmlstruts-config.xml<message-resources><message-resources parameter="resources.messages"/> parameter
  3. Action クラスでリソースバンドルを使用する: Action クラスでは、オブジェクトのメソッドを呼び出してエラーメッセージを追加できます。 たとえば、次のフォームのユーザー名とパスワードを検証する単純な Action クラスを次に示します。 javaCopy コード 上記の例では、フォームのユーザー名またはパスワードが空の場合、リソースバンドルからのエラーメッセージが使用されます。ActionMessagesadd(String, ActionMessage)public class LoginAction extends Action { public ActionForward execute(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception { LoginForm loginForm = (LoginForm) form; ActionErrors errors = new ActionErrors(); String username = loginForm.getUsername(); String password = loginForm.getPassword(); if (username == null || username.trim().length() == 0) { errors.add("username", new ActionMessage("error.required")); } if (password == null || password.trim().length() == 0) { errors.add("password", new ActionMessage("error.required")); } if (!authenticateUser(username, password)) { errors.add("login", new ActionMessage("error.login.invalid")); } if (errors.isEmpty()) { return mapping.findForward("success"); } else { saveErrors(request, errors); return mapping.findForward("failure"); } } private boolean authenticateUser(String username, String password) { // 身份验证逻辑 } } error.required
軍亭

続けてください

オブジェクトを作成し、オブジェクトに追加します。 たとえば、フィールドのエラー メッセージのリストにエラー メッセージが追加されたことを示します。ActionMessageActionErrorserrors.add("username", new ActionMessage("error.required"))error.requiredusername

上記の例では、メソッドはユーザーを認証するカスタム メソッドです。 検証に失敗した場合、リソースバンドルのエラーメッセージを使用してオブジェクトにエラーが追加されます。authenticateUsererror.login.invalidloginActionErrors

  1. JSP ページにエラーメッセージを表示する: JSP ページでは、タグを使用してすべてのエラーメッセージを表示できます。 たとえば、エラーメッセージをフォームに表示する単純なJSPページを次に示します。 jspCopy コード 上記の例では、タグを使用してすべてのエラーメッセージを表示しています。 エラー メッセージがある場合は、それぞれに個別のリスト アイテムを持つリストとして表示されます。<html:errors><html:errors/> <html:form action="/login" method="post"> <html:text property="username"/> <html:text property="password"/> <html:submit/> </html:form> <html:errors>

リソース・バンドルを使用すると、国際化エラー・メッセージの処理を簡単に実装できるため、アプリケーションは異なるロケールで異なるエラー・メッセージを表示できます。 リソースバンドルと使用状況タグを適切に設定することで、JSPページにエラーメッセージを表示するのに便利になり、ユーザーエクスペリエンスとアプリケーションの使いやすさが向上します。<html:errors>

軍亭

続けてください

  1. パラメータの使用: 場合によっては、リソースバンドルのエラーメッセージにパラメータを渡す必要があります。 たとえば、ユーザー名の長さを 5 から 20 文字にする必要があるというエラー メッセージを表示する場合は、次のコードを使用できます。 javaCopy コード 上記の例では、最小長と最大長をそれぞれ表す <> つのパラメーターを持つリソース パック キーです。 エラー メッセージを追加するときは、これら <> つのパラメーターをオブジェクトに渡すことで、これらの値を設定できます。ActionMessageserrors.add("username", new ActionMessage("error.length", 5, 20)); error.lengthActionMessage
  2. リソースバンドルでパラメータを使用する: リソースバンドルファイルでは、 などのプレースホルダを使用してパラメータの場所を示すことができます。 たとえば、上記の例の goCopy コードと、それぞれ 1 番目と 2 番目のパラメーターの位置というパラメーターを含むエラー メッセージを次に示します。 エラー・メッセージが表示されると、Struts はこれらのプレースホルダーを実際のパラメーター値に自動的に置き換えます。{0}{1}error.length=The length of the field must be between {0} and {1}. {0}{1}

パラメータを使用すると、リソースバンドルで再利用可能なエラーメッセージを簡単に定義し、必要に応じてパラメータを渡すことができます。 これにより、コードの冗長性とエラーが減り、アプリケーションの保守性と再利用性が向上します。

軍亭

続けてください

  1. リソース・バンドルの拡張: でリソース・バンドルを構成することに加えて、拡張機能およびクラスを使用してカスタム・エラー・メッセージおよびリソース・バンドルを作成できます。 たとえば、単純なカスタム エラー メッセージ クラスを次に示します。 javaCopy コード 上記の例では、クラスはクラスから継承し、メソッドをオーバーライドしてカスタム エラー メッセージ処理ロジックを実装します。 その後、Action クラスでそのクラスを使用して、カスタム エラー メッセージを追加できます。 たとえば、クラスを使用する例を次に示します。 javaCopy コード 上記の例では、このクラスを使用してカスタム エラー メッセージを作成しています。 カスタム エラー メッセージ処理ロジックは、オーバーライド メソッドを使用して実装できます。struts-config.xmlActionMessagesActionMessagepublic class MyActionMessage extends ActionMessage { public MyActionMessage(String key) { super(key); } public MyActionMessage(String key, Object[] values) { super(key, values); } public String toString(Locale locale) { // 自定义错误消息的处理逻辑 } } MyActionMessageActionMessagetoString(Locale)MyActionMessagepublic class LoginAction extends Action { public ActionForward execute(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception { LoginForm loginForm = (LoginForm) form; ActionErrors errors = new ActionErrors(); String username = loginForm.getUsername(); String password = loginForm.getPassword(); if (username == null || username.trim().length() == 0) { errors.add("username", new MyActionMessage("error.required")); } if (password == null || password.trim().length() == 0) { errors.add("password", new MyActionMessage("error.required")); } if (!authenticateUser(username, password)) { errors.add("login", new MyActionMessage("error.login.invalid")); } if (errors.isEmpty()) { return mapping.findForward("success"); } else { saveErrors(request, errors); return mapping.findForward("failure"); } } private boolean authenticateUser(String username, String password) { // 身份验证逻辑 } } MyActionMessagetoString(Locale)

拡張機能とクラスを使用すると、カスタムエラーメッセージとリソースバンドルを作成し、カスタムエラーメッセージ処理ロジックを実装できます。 これにより、アプリケーションは特定のニーズをより適切に満たし、アプリケーションの再利用性と保守性を向上させることができます。ActionMessagesActionMessage

軍亭

Strutsタグライブラリの紹介について詳しく説明してください

Struts タグ・ライブラリーは、Struts Web アプリケーションの開発を単純化および加速するために設計された JSP カスタム・タグのセットです。 タグライブラリを使用すると、Strutsのモデルデータやリクエストプロセッサにアクセスし、HTMLフォーム要素、リンク、その他のWebページ要素を簡単に生成できます。 Struts では、タグライブラリは JSP ページとアクションクラス間の主要な通信手段の 1 つです。

Struts タグライブラリには、タスクごとに異なるタグが含まれています。 Struts タグライブラリの一般的なタグとその用途は次のとおりです。

  1. <html:form>タグタグは HTML フォームの生成に使用され、属性はフォームによって送信されるアクション URL を指定し、属性はフォームによって送信される HTTP メソッドを指定します。 さらに、タグは、フォームのスタイルと動作を制御する追加のプロパティを提供します。<html:form>actionmethod<html:form>
  2. <html:text>タグタグは HTML テキストボックスの生成に使用され、属性はテキストボックスに関連付けられたフォーム Bean 属性を指定し、属性はテキストボックスのサイズと最大長を指定します。<html:text>propertysizemaxlength
  3. <html:password>タグタグは、HTML パスワードボックスを生成するために使用され、属性はパスワードボックスに関連付けられたフォーム Bean 属性を指定し、属性はパスワードボックスのサイズと最大長を指定します。<html:password>propertysizemaxlength
  4. <html:submit>タグタグは、HTML 送信ボタンを生成するために使用され、属性はボタンの表示テキストを指定します。<html:submit>value
  5. <html:link>タグタグは HTML ハイパーリンクの生成に使用され、属性はリンクのターゲットアクション URL を指定し、属性はターゲットページへのパスを指定し、属性はリンクのアンカーポイントを指定します。<html:link>actionpageanchor
  6. <html:errors>Label ラベルは、フォームの送信後に発生するエラーメッセージを表示するために使用され、プロパティーはエラーメッセージを表示するためのフォーム Bean プロパティーを指定し、Bundle プロパティーは使用するリソースバンドル名を指定します。<html:errors>propertybundle

Struts タグ・ライブラリーは、Struts Web アプリケーション開発の重要な部分です。 タグライブラリを使用することで、HTMLフォーム要素、リンク、およびその他のWebページ要素をすばやく簡単に生成できるため、コードの冗長性とエラーが減少し、アプリケーションの保守性と再利用性が向上します。

軍亭

一般的に使用されるStrutsタグの使用例を詳しく説明してください

一般的に使用される Struts タグの例を次に示します。

  1. <html:form>上記の例では、タグを使用して POST リクエストの HTML フォームを生成します。 プロパティーはフォーム Bean のプロパティーを指定し、「TextBox」プロパティーはテキストボックスのサイズと最大長を指定するために使用されます。 タグは、送信ボタンを生成するために使用されます。<html:form action="/login" method="post"> <html:text property="username" size="20" maxlength="50"/> <html:password property="password" size="20" maxlength="50"/> <html:submit value="Login"/> </html:form> <html:form>propertysizemaxlength<html:submit>
  2. <html:text>上記の例では、タグを使用してテキストボックスを生成し、プロパティはフォーム Bean のプロパティを指定し、プロパティはテキストボックスのサイズと最大長を指定するために使用されます。<html:text property="username" size="20" maxlength="50"/> <html:text>propertysizemaxlength
  3. <html:password>上記の例では、ラベルを使用してパスワードボックスを生成し、プロパティはフォーム Bean のプロパティーを指定し、プロパティーはパスワードボックスのサイズと最大長を指定するために使用されます。<html:password property="password" size="20" maxlength="50"/> <html:password>propertysizemaxlength
  4. <html:submit>上記の例では、ラベルを使用して送信ボタンを生成し、プロパティを使用してボタンの表示テキストを指定しています。<html:submit value="Login"/> <html:submit>value
  5. <html:link>上記の例では、タグを使用してハイパーリンクを生成し、プロパティはリンクのターゲットアクション URL を指定し、プロパティはターゲットページへのパスを指定し、プロパティはリンクのアンカーポイントを指定します。<html:link action="/logout" page="/index.jsp" anchor="top">Logout</html:link> <html:link>actionpageanchor
  6. <html:errors>上記の例では、フォームの送信後に生成されたエラーメッセージを表示するためにラベルが使用され、プロパティはエラーメッセージを表示するためのフォームBeanプロパティを指定します。<html:errors property="username"/> <html:errors>property

これらの例からわかるように、Struts タグ・ライブラリーは、HTML フォーム・エレメント、リンク、およびその他の Web ページ・エレメントを簡単に生成できます。 これらのラベルには豊富なプロパティと機能があり、必要に応じて構成するようにカスタマイズできます。 Struts タグ・ライブラリーを合理的に使用することで、開発をスピードアップし、コードの量を減らし、コードの保守性と再利用性を向上させることができます。

軍亭

カスタムストラットタグについて詳しく説明してください

Struts タグライブラリには、さまざまな Web ページ要素を簡単に生成できる強力なタグが多数用意されていますが、特定のニーズに合わせて一部のタグをカスタマイズする必要がある場合があります。 カスタム Struts タグは、ラベルとカスタムラベルプロセッサでラベルライブラリを拡張することで実装できます。

Struts タグをカスタマイズする手順は次のとおりです。

  1. タグライブラリからタグクラスを継承する Java クラスを作成します。 クラスには、ラベルのプロパティと処理ロジックが含まれます。 たとえば、カスタム ラベル クラスを次に示します。 javaCopy コード 上記の例では、クラスはクラスから継承され、カスタム プロパティと処理ロジックが含まれています。public class MyTag extends org.apache.struts.taglib.html.BaseHandlerTag { private String myAttribute; public void setMyAttribute(String myAttribute) { this.myAttribute = myAttribute; } public String getMyAttribute() { return myAttribute; } public int doStartTag() throws JspException { // 标签处理逻辑 return EVAL_BODY_INCLUDE; } } MyTagorg.apache.struts.taglib.html.BaseHandlerTagmyAttribute
  2. 新しいタグの名前、属性、目的を説明する TLD ファイルを作成します。 TLDファイルには、タグの名前、説明、クラス、属性、目的などの情報が含まれている必要があります。 たとえば、次に TLD ファイルがあります: xmlCopy コード 上記の例では、TLD ファイルは という名前の新しいタグを定義し、タグの名前、説明、クラス、属性、および目的を指定します。<?xml version="1.0" encoding="ISO-8859-1" ?> <!DOCTYPE taglib PUBLIC "-//Sun Microsystems, Inc.//DTD JSP Tag Library 1.2//EN" "http://java.sun.com/dtd/web-jsptaglibrary_1_2.dtd"> <taglib> <tlib-version>1.0</tlib-version> <jsp-version>1.2</jsp-version> <short-name>mytag</short-name> <tag> <name>mytag</name> <tag-class>com.example.MyTag</tag-class> <body-content>JSP</body-content> <attribute> <name>myAttribute</name> <required>false</required> <rtexprvalue>true</rtexprvalue> </attribute> </tag> </taglib> mytag
  3. TLD ファイルとカスタムタグクラスを JAR ファイルにパッケージ化し、JAR ファイルを Web アプリケーションのディレクトリに配置します。WEB-INF/lib
  4. JSP ページでカスタムタグライブラリを参照し、カスタムタグを使用します。 たとえば、カスタム ラベルの使用例を次に示します。 jspCopy コード 上記の例では、ディレクティブを使用してカスタム タグ ライブラリを参照しています。 ラベルは、カスタムラベルを使用し、カスタム属性を渡すために使用されます。<%@ taglib uri="/WEB-INF/mytag.tld" prefix="mytag" %> <mytag:mytag myAttribute="myValue"/> <%@ taglib %><mytag:mytag>myAttribute

自分で

軍亭

続けてください

Struts タグをカスタマイズすることで、特定のニーズを満たし、Web アプリケーション開発の効率と柔軟性を向上させることができます。 カスタムStrutsタグの例を次に示します。

  1. カスタム テーブル ラベル javaCopy コード 上記の例では、クラスはクラスから継承し、2 つのカスタム プロパティと が含まれています。 タグ付けロジックでは、データは HTML テーブル要素を出力することによって表示されます。public class TableTag extends org.apache.struts.taglib.html.BaseHandlerTag { private String[] headers; private List rows; public void setHeaders(String[] headers) { this.headers = headers; } public void setRows(List rows) { this.rows = rows; } public int doStartTag() throws JspException { JspWriter out = pageContext.getOut(); try { // 输出表头 out.println("<table>"); out.println("<thead>"); out.println("<tr>"); for (String header : headers) { out.println("<th>" + header + "</th>"); } out.println("</tr>"); out.println("</thead>"); // 输出表体 out.println("<tbody>"); for (Object row : rows) { out.println("<tr>"); for (String header : headers) { String value = BeanUtils.getProperty(row, header); out.println("<td>" + value + "</td>"); } out.println("</tr>"); } out.println("</tbody>"); out.println("</table>"); } catch (Exception e) { throw new JspException(e); } return SKIP_BODY; } } TableTagorg.apache.struts.taglib.html.BaseHandlerTagheadersrows
  2. カスタムページネーションタブ javaCopy コード 上記の例では、クラスはクラスから継承し、2 つのカスタム プロパティと が含まれています。 タグ処理ロジックでは、HTMLリンク要素を出力することでページネーションを実装します。public class PagerTag extends org.apache.struts.taglib.html.BaseHandlerTag { private int currentPage; private int totalPages; public void setCurrentPage(int currentPage) { this.currentPage = currentPage; } public void setTotalPages(int totalPages) { this.totalPages = totalPages; } public int doStartTag() throws JspException { JspWriter out = pageContext.getOut(); try { // 输出分页链接 out.println("<div class=\"pager\">"); for (int i = 1; i <= totalPages; i++) { if (i == currentPage) { out.println("<span>" + i + "</span>"); } else { out.println("<a href=\"?page=" + i + "\">" + i + "</a>"); } } out.println("</div>"); } catch (Exception e) { throw new JspException(e); } return SKIP_BODY; } } PagerTagorg.apache.struts.taglib.html.BaseHandlerTagcurrentPagetotalPages

Struts ラベルをカスタマイズすることで、さまざまなカスタムコントロールや機能を実装して、開発をスピードアップし、アプリケーションの柔軟性を高めることができます。

軍亭

インターセプターの紹介について詳しく説明してください

インターセプターは、要求、応答、例外などのイベントをインターセプトして処理するための Struts2 の最も重要なコンポーネントの 2 つです。 インターセプターは、アクションの実行前または実行後に一部の処理ロジックを実行でき、ログ記録、アクセス許可制御、例外処理、パフォーマンス分析、およびその他の機能を実装するために使用できます。 インターセプターは Struts2 フレームワークの重要な部分であり、Struts<> フレームワークの高い柔軟性とスケーラビリティの鍵となります。

Struts2では、インターセプターはインターセプタースタックを介して編成され、必要に応じてさまざまなインターセプターを組み合わせてカスタムインターセプタースタックを形成し、要求の包括的な制御と処理を実現できます。 インターセプター スタックは、指定された順序で配置された複数のインターセプターで構成され、各インターセプターは、前処理、後処理、または例外処理を実行したり、要求の処理を終了したり、指定されたページにジャンプしたり、要求を他のアクションに転送したりできます。

一般的に使用されるいくつかのインターセプターは、次のようないくつかの Struts2 フレームワークに既に組み込まれています。

  1. exception: 例外を処理するために使用されると、アクションの実行中に生成された例外をキャッチし、それに応じて処理できます。
  2. params: 要求パラメーターの処理に使用され、要求パラメーターを Action プロパティに変換し、型変換とチェックサムを実行できます。
  3. servlet-config: サーブレットコンテキスト、要求、応答、その他のオブジェクトなど、サーブレットの構成情報を設定するために使用されます。
  4. servlet-config-struts: アクションコンテキスト、アクションプロキシ、その他のオブジェクトなどのStruts構成情報を設定するために使用されます。
  5. validation: 指定された検証規則に従って検証できるフォーム データの検証に使用され、検証が失敗した場合にエラー メッセージを返します。

組み込みのインターセプターに加えて、開発者は特定のニーズに合わせてインターセプターをカスタマイズすることもできます。 カスタム インターセプターは、インターフェイスを実装し、 などのメソッドをオーバーライドする必要があります。 インターセプターを実装する場合は、インターセプターの実行順序とインターセプター スタックの構成に注意を払い、インターセプターが正しい順序で実行されることを確認し、要求のすべての側面を処理する必要があります。com.opensymphony.xwork2.interceptor.Interceptorinit()destroy()intercept()

軍亭

続けてください

Struts2 では、インターセプター・スタックを構成し、インターセプターが実行される順序を指定することで、インターセプターを組み合わせることができます。 インターセプター スタックは、それぞれが一意の名前とパラメーターのセットを持つ複数のインターセプターで構成され、インターセプター スタックは、さまざまなビジネス ニーズを満たすためにニーズに応じてカスタマイズできます。

インターセプター スタックの構成例を次に示します。

xmlCopy code<interceptors>
   <interceptor name="myInterceptor" class="com.example.MyInterceptor">
       <param name="param1">value1</param>
       <param name="param2">value2</param>
   </interceptor>
   <interceptor-stack name="myInterceptorStack">
       <interceptor-ref name="exception"/>
       <interceptor-ref name="myInterceptor"/>
       <interceptor-ref name="params"/>
   </interceptor-stack>
</interceptors>

上記の例では、という名前のカスタム インターセプターが定義されており、2 つのパラメーターと が指定されています。 次に、1 と呼ばれるインターセプター スタックが定義され、組み込みインターセプター、カスタム、および組み込みインターセプターが結合され、順番に実行されます。myInterceptorparam1param2myInterceptorStackexceptionmyInterceptorparams

インターセプター スタックは、注釈または XML 構成によるアクションで使用できます。 たとえば、Action では、使用されるインターセプター スタックは注釈によって指定されます。

javaCopy code@InterceptorRef("myInterceptorStack")
public class MyAction extends ActionSupport {
   // ...
}

上記の例では、注釈を使用して、という名前のインターセプタースタックの使用を指定しています。 このようにして、アクションが実行されると、インターセプターはインターセプタースタック内にある順序で実行され、対応する処理が完了します。@InterceptorRefmyInterceptorStack

インターセプターは、Struts2 フレームワークのコア・コンポーネントの 2 つであり、さまざまなビジネス・ニーズの実装に使用できます。 インターセプターの原理と使用法を理解することは、開発者が Struts<> フレームワークがどのように機能して、より柔軟でスケーラブルな Web アプリケーションを開発するかをよりよく理解するのに役立ちます。

軍亭

カスタムインターセプターの書き方を詳しく説明してください

Struts2 では、インターフェースを実装することでカスタム・インターセプターを作成できます。 インターセプターは Struts2 フレームワークの重要な部分であり、要求、応答、例外などのイベントをインターセプトして、ロギング、パーミッション制御、例外処理、パフォーマンス分析などのさまざまな機能を実装できます。com.opensymphony.xwork2.interceptor.Interceptor

カスタム インターセプターのサンプル コードを次に示します。

javaCopy codepublic class MyInterceptor implements Interceptor {
   private String param1;
   private String param2;

   public void init() {
       // 初始化操作,可以在此处读取配置文件等
   }

   public void destroy() {
       // 清理资源操作,可以在此处关闭文件、网络连接等
   }

   public String intercept(ActionInvocation invocation) throws Exception {
       // 在Action执行前执行的操作
       System.out.println("param1=" + param1);
       System.out.println("param2=" + param2);

       // 调用下一个拦截器或Action
       String result = invocation.invoke();

       // 在Action执行后执行的操作
       System.out.println("result=" + result);

       return result;
   }

   public void setParam1(String param1) {
       this.param1 = param1;
   }

   public void setParam2(String param2) {
       this.param2 = param2;
   }
}

上記の例では、クラスはインターフェイスを実装し、およびメソッドをオーバーライドします。 このメソッドでは、カスタム パラメーターの合計が最初に出力され、次にメソッドが呼び出されて次のインターセプターまたはアクションに進みます。 アクション実行後、実行結果を出力します。MyInterceptorcom.opensymphony.xwork2.interceptor.Interceptorinit()destroy()intercept()intercept()param1param2ActionInvocation.invoke()result

カスタム インターセプターを使用するには、次の例に示すように、struts .xmlで構成する必要があります。

xmlCopy code<interceptors>
   <interceptor name="myInterceptor" class="com.example.MyInterceptor">
       <param name="param1">value1</param>
       <param name="param2">value2</param>
   </interceptor>
</interceptors>

<action name="myAction" class="com.example.MyAction">
   <interceptor-ref name="myInterceptor"/>
   <result name="success">/success.jsp</result>
</action>

上記の例では、という名前のカスタム インターセプターが定義されており、2 つのパラメーターと が指定されています。 次に、Action の構成では、カスタム インターセプターを使用してアクション要求をインターセプトして処理します。myInterceptorparam1param2myActionmyInterceptor

カスタム・インターセプターを作成するには、Struts2 フレームワークのインターセプター・メカニズムと API を習得し、インターセプターの実行順序と実行、およびアクション要求、応答、例外などのイベントの読み取りと処理の方法に精通している必要があります。 同時に、カスタムインターセプターの正確性と安定性は、アプリケーション全体の運用効率とセキュリティに大きな影響を与えることに注意してください。

軍亭

インターセプターチェーンの設定方法を詳しく説明してください

Struts2 では、インターセプター・スタックを構成して、要求の処理と制御を実現することで、インターセプターの実行順序とパラメーターを指定できます。 インターセプター チェーンは複数のインターセプターで構成され、要求の実行時に例外が発生する前、後、または例外が発生したときにそれぞれを処理でき、インターセプター チェーンの順序によってインターセプターが実行される順序が決まります。

インターセプター チェーンの構成例を次に示します。

xmlCopy code<interceptors>
   <interceptor name="myInterceptor" class="com.example.MyInterceptor">
       <param name="param1">value1</param>
       <param name="param2">value2</param>
   </interceptor>

   <interceptor-stack name="myInterceptorStack">
       <interceptor-ref name="exception"/>
       <interceptor-ref name="myInterceptor"/>
       <interceptor-ref name="params"/>
   </interceptor-stack>
</interceptors>

上記の例では、という名前のカスタム インターセプターが定義されており、2 つのパラメーターと が指定されています。 次に、one という名前のインターセプターのチェーンが定義され、組み込みインターセプター、カスタム、および組み込みインターセプターが結合され、順番に実行されます。myInterceptorparam1param2myInterceptorStackexceptionmyInterceptorparams

アクションでインターセプターチェーンを使用するには、アクション設定でインターセプタースタックの名前を指定するか、注釈を付けて指定できます。 次に例を示します。

xmlCopy code<action name="myAction" class="com.example.MyAction">
   <interceptor-ref name="myInterceptorStack"/>
   <result name="success">/success.jsp</result>
</action>

上記の例では、Action は呼び出されたインターセプターのチェーンを使用して、Action 要求をインターセプトして処理します。myActionmyInterceptorStack

インターセプターチェーンの順序に注意してください、通常、最初に実行できるように、インターセプターチェーンの前に汎用インターセプターを配置する必要があります。 同時に、インターセプターチェーンのスコープにも注意を払う必要があり、一般に、複数のアクションを共有できるようにグローバルスコープでインターセプターチェーンを構成することも、特定のニーズを満たすために単一のアクションでカスタムインターセプターチェーンを構成することもできます。

つまり、インターセプターチェーンの構成はStruts2フレームワークの非常に重要な部分であり、インターセプターチェーンの構成方法と注意事項を習得し、アクションリクエストのインターセプトと制御をより適切に実現し、Webアプリケーションのセキュリティと信頼性を向上させることができます。

軍亭

Ajaxの紹介について詳しく説明してください

Ajax (非同期 JavaScript および XML) は、Web ページ全体をリロードすることなくサーバーとの非同期データ対話を可能にする Web 開発手法であり、ページコンテンツを動的に更新できるようにします。

Ajax のコア・テクノロジーは、XMLHttpRequest オブジェクトを介してサーバーとの非同期通信を実現することであり、XMLHttpRequest オブジェクトは、ユーザーの現在の操作に影響を与えることなく、バックグラウンドでサーバーと対話できます。 従来のWebページと比較して、Ajaxテクノロジーを使用すると、ページのユーザーエクスペリエンスが向上し、応答速度が速くなり、Webアプリケーションのインタラクティブ性と実用性が向上します。

Ajax テクノロジーを使用する Web アプリケーションには、通常、以下のフィーチャーが含まれます。

  1. 非同期データ相互作用: Ajax テクノロジーを使用すると、ページ全体を更新せずに非同期データを使用してサーバーと対話し、ページコンテンツを動的に更新する機能を実現できます。
  2. JavaScript を使用した実装: Ajax テクノロジーは、サーバーとの非同期通信と JavaScript を介したページ更新を実現するために、JavaScript オブジェクトと XMLHttpRequest オブジェクトに大きく依存しています。
  3. 標準化ベースのWebテクノロジー:Ajaxテクノロジーは、XML、HTML、CSS、JavaScript、HTTPなどの標準化されたWebテクノロジーに基づいており、優れたクロスプラットフォームと移植性を備えています。
  4. Web アプリケーションの対話性と使いやすさの向上: Ajax テクノロジーを使用すると、Web アプリケーションのユーザー・エクスペリエンスが向上し、応答速度が速くなり、Web アプリケーションの対話性と実用性が向上します。

結論として、Ajaxテクノロジーは、Webアプリケーションにより高いユーザーエクスペリエンスとより良いインタラクティブ性を持たせることができる非常に重要なWeb開発テクノロジーであり、Web開発者が習得する必要のあるスキルの1つです。

軍亭

Struts と Ajax の統合について詳しく説明してください

Struts2 では、組み込みの Ajax タグ・ライブラリーおよび関連する JavaScript ライブラリーを使用して、Ajax 要求を処理して応答するために、Ajax テクノロジーと簡単に統合できます。 以下は、単純な Struts2 と Ajax の統合の例です。

  1. JQuery や json2 などの関連する JavaScript ライブラリを Struts2 プロジェクトに導入.js。
  2. Struts2 の組み込み Ajax タグ・ライブラリーを JSP ページ (<s:url>、<s:submit>、<s:form>、<s:div> など) で使用して、Ajax リクエストを処理して応答します。 例えば:
jspCopy code<s:url var="ajaxUrl" action="ajaxAction"/>
<s:form id="ajaxForm">
   <s:textfield name="username" label="用户名"/>
   <s:password name="password" label="密码"/>
   <s:submit value="登录" onclick="ajaxLogin()"/>
</s:form>
<s:div id="ajaxResult"/>

上記の例では、Ajax リクエストの URL アドレスは <s:url> タグを使用して定義され、ユーザー名、パスワード、およびログインボタンを含むフォームは <s:form> タグを使用して定義され、ajaxLogin() 関数は onclick イベントを使用してトリガーされました。 <s:div> タグを使用して、Ajax 応答の結果を表示する領域を定義します。

  1. JavaScript コードで ajaxLogin() 関数を記述して、Ajax リクエストに対する処理と応答を実装します。 例えば:
javascriptCopy codefunction ajaxLogin() {
   $.ajax({
       type: "POST",
       url: $("#ajaxUrl").val(),
       data: $("#ajaxForm").serialize(),
       success: function(response) {
           $("#ajaxResult").html(response);
       },
       error: function() {
           alert("请求失败,请稍后重试!");
       }
   });
}

上記の例では、Ajax リクエストの処理と応答は、jQuery ライブラリの $.ajax() メソッドを使用して実装されています。 type を使用して要求の種類を指定し、url を使用して要求の URL アドレスを指定し、data を使用して要求のパラメーターを指定し、成功を使用して応答が成功した後にハンドラーを指定し、error を使用して応答が失敗した後にハンドラー関数を指定します。

  1. Struts2 で Ajax リクエストを処理するための Action クラスとメソッドを定義します。
javaCopy codepublic class AjaxAction extends ActionSupport {
   private String username;
   private String password;

   public String execute() {
       // 处理Ajax请求
       return SUCCESS;
   }

   // getter和setter方法
}

上記の例では、Action という名前のクラスが定義され、execute() メソッドが実装されており、Ajax リクエストを処理して応答結果を返すことができます。AjaxAction

上記のステップにより、Struts2 を Ajax と統合して、Ajax 要求を処理して応答することができます。 実際の開発では、より複雑な機能とより優れたユーザー・エクスペリエンスを実現するために、特定のニーズに応じて適切な Ajax テクノロジーと JavaScript ライブラリーを選択できます。

軍亭

Ajaxの例を実装する方法を詳しく説明してください

以下は、Ajax テクノロジーを使用してサーバー・サイド・データに対する非同期要求と応答を実装する方法を示す簡単な Ajax の例です。

  1. Java Web プロジェクトを作成し、jQuery や json2.js などの関連する JavaScript ライブラリを導入します。
  2. JSP ページを作成し、Ajax 要求を処理して応答するための関連する HTML および JavaScript コードを記述します。 例えば:
jspCopy code<html>
   <head>
       <title>Ajax示例</title>
       <script type="text/javascript" src="jquery.min.js"></script>
       <script type="text/javascript" src="json2.js"></script>
   </head>
   <body>
       <h2>Ajax示例</h2>
       <form id="ajaxForm">
           <label for="username">用户名:</label>
           <input type="text" id="username" name="username"/>
           <br/>
           <label for="password">密码:</label>
           <input type="password" id="password" name="password"/>
           <br/>
           <input type="button" value="登录" onclick="ajaxLogin()"/>
       </form>
       <div id="ajaxResult"></div>
       <script type="text/javascript">
           function ajaxLogin() {
               $.ajax({
                   type: "POST",
                   url: "ajaxServlet",
                   data: {
                       username: $("#username").val(),
                       password: $("#password").val()
                   },
                   dataType: "json",
                   success: function(response) {
                       if (response.success) {
                           $("#ajaxResult").html("登录成功!");
                       } else {
                           $("#ajaxResult").html("登录失败,请重试!");
                       }
                   },
                   error: function() {
                       $("#ajaxResult").html("请求失败,请稍后重试!");
                   }
               });
           }
       </script>
   </body>
</html>

上記の例では、ユーザー名、パスワード、ログインボタンを含むフォームは <form> タグを使用して定義され、フォーム内の入力ボックスとボタンは <input> タグを使用して定義されています。 <div> タグを使用すると、Ajax 応答の結果を表示する領域が定義されます。

ajaxLogin() と呼ばれる JavaScript 関数は、jQuery ライブラリーの $.ajax() メソッドを使用して Ajax リクエストを処理し、応答する <script> タグを使用して定義されます。 要求の種類を指定するには type、要求の URL アドレスを指定するには url、要求のパラメーターを指定するには data、応答データの種類を指定するには dataType、応答が成功した後にハンドラー関数を指定するには成功、応答が失敗した後にハンドラー関数を指定するには error を使用します。

  1. Java サーブレットを作成し、Ajax 要求を処理して応答する Java コードを記述します。 例えば:
javaCopy codeimport java.io.IOException;
import java.io.PrintWriter;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import net.sf.json.JSONObject;

public class AjaxServlet extends HttpServlet {
   private static final long serialVersionUID = 1L;

   protected void doPost(HttpServletRequest request, HttpServletResponse response) 
           throws ServletException, IOException {
       String username = request.getParameter("username");
       String password = request.getParameter("password");

       JSONObject json = new JSONObject();
       if ("admin".equals(username) && "admin123".equals(password)) {
           json.put("success", true);
       } else {
           json.put("success", false);
       }

       response.setContentType("application/json;charset=utf-8");
       PrintWriter out = response.getWriter();
       out.print(json);
       out.flush();
       out
軍亭

続けてください

上記の例では、AjaxServlet という名前の Java サーブレット・クラスが作成され、doPost() メソッドが実装されており、そこでは Ajax リクエストを処理して応答結果を返すことができます。

このメソッドでは、request.getParameter() メソッドを使用して、Ajax リクエストのパラメータ値、つまりユーザー名とパスワードを取得します。 net.sf.json.JSONObject クラスを使用して JSON オブジェクトを作成し、ユーザー名とパスワードの検証結果に従って、対応するプロパティ値、つまり成功プロパティを設定します。 response.setContentType() メソッドを使用して、application/json に対するレスポンスのコンテンツタイプタイプを設定します。 charset=utf-8 は、PrintWriter クラスを使用して、JSON オブジェクトの文字列形式を応答に出力します。

上記のステップにより、Ajax テクノロジーを使用してサーバー・サイド・データに対する非同期要求および応答を実装する方法を示す、単純な Ajax の例を実装できます。 実際の開発では、特定のニーズに応じて適切な Ajax テクノロジーと JavaScript ライブラリーを選択して、より複雑な機能とより優れたユーザー・エクスペリエンスを実現できます。

軍亭

実用的なケースを実装する方法を詳細に説明してください:単純なCRUDアプリケーション、最初にプロジェクト要件分析を実行してください

単純なCRUDアプリケーションは、データベース内のデータの追加、削除、変更、チェックなどの基本的な操作を実現できる基本的なデータベース管理アプリケーションです。 以下は、Struts2 フレームワークに基づく単純な CRUD アプリケーションのプロジェクト要件分析です。

  1. 要件の概要

アプリケーションは、データベース内のデータを追加、削除、変更、および確認する必要があり、特定の要件は次のとおりです。

  • ユーザーはすべてのデータを参照し、ページに表示できます。
  • ユーザーは、フォームの送信時にデータを追加し、データを検証できます。
  • ユーザーは、フォームの送信時にデータを編集し、データを検証できます。
  • ユーザーはデータの一部を削除して2回確認できます。
  1. データベース設計

アプリケーションはデータベースにアクセスする必要があるため、最初にデータベースのテーブル構造を設計する必要があります。 アプリケーションで、次のフィールドを持つ学生情報テーブルを管理する必要があるとします。

  • ID:学生番号、主キー。
  • 名前:学生の名前、必須、長さは50文字以内。
  • 性別:学生の性別、必須、値の範囲は「男性」または「女性」です。
  • 年齢:学生の年齢、必須、値の範囲は1~150の整数です。

したがって、次のフィールドを含む “student” という名前のデータベース テーブルをデザインできます。

sqlCopy codeCREATE TABLE `student` (
   `id` int(11) NOT NULL AUTO_INCREMENT,
   `name` varchar(50) NOT NULL,
   `gender` varchar(10) NOT NULL,
   `age` int(11) NOT NULL,
   PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
  1. インターフェースデザイン

アプリケーションは、学生情報の追加、削除、修正、確認などの操作を実現する必要があるため、対応するインターフェイスを設計する必要があります。

  • ホーム:このページは、すべての学生情報を表示するために使用され、ページネーション機能と他のアクションページへのリンクを提供します。
  • ページを追加:このページは、名前、性別、年齢などの入力ボックスや送信ボタンなど、新しい学生情報を追加するために使用されます。
  • ページの編集:このページは、名前、性別、年齢などの入力ボックスや送信ボタンを含む既存の学生情報を編集するために使用されます。
  • ページの削除 : このページでは、確認ボタンやキャンセルボタンなど、既存の学生情報を削除します。
  1. 機能要件

上記の要件の概要とインターフェイス設計に基づいて、次のように特定の機能要件を一覧表示できます。

  • 家:
    • すべての学生情報を表示します。
    • ページネーション機能を提供します。
    • 追加されたページにリンクする機能を提供します。
    • 編集ページにリンクする機能を提供します。
    • 削除されたページにリンクする機能を提供します。
  • ページを追加するには:
    • 学生の名前を入力するための入力フィールドを提供します。
    • 学生の性別を選択するためのドロップダウンボックスを提供します。
    • 学生の年齢を入力するための入力フィールドを提供します。
    • 入力されたデータが要件を満たしているかどうかを確認するためのフォーム検証機能を提供します。
    • 新しい学生情報をデータベースに追加するフォームを送信する機能を提供します。
  • ページを編集するには:
    • 指定された学生番号に基づいて学生を取得します
軍亭

続けてください

氏名、性別、年齢等を含む詳細

  • 入力ボックスに学生の詳細を表示します。
  • 入力されたデータが要件を満たしているかどうかを確認するためのフォーム検証機能を提供します。
  • 変更された学生情報をデータベースに更新するためのフォームを送信する機能を提供します。
  • ページを削除するには:
    • 割り当てられた学生番号に応じて、名前、性別、年齢などを含む学生の詳細を取得します。
    • ページに学生の詳細を表示します。
    • 学生の情報を削除するかどうかを確認するための二次確認機能を提供します。
    • 削除が確認されると、データベースから学生情報が削除されます。
  1. 技術的な実装

このアプリケーションは、Struts2 フレームワークに基づいて実装され、次のテクノロジが必要です。

  • Struts2フレームワーク:MVCパターンを実装するために使用され、要求と応答を処理します。
  • JSPページ:データを表示し、ユーザー入力を処理するために使用されます。
  • サーブレット:要求の受信と処理、およびサービス層メソッドの呼び出しに使用され、ビジネスロジックを実装します。
  • サービス層:データベースへのアクセス、データ検証などを含むビジネスロジックを実装するために使用されます。
  • データベース: 学生情報を保存および管理するために使用されます。

上記のプロジェクト要件分析を通じて、アプリケーションの機能と実装方法を明確に理解し、その後の開発作業のガイダンスと支援を提供できます。

軍亭

実装データベースの設計・構築について詳しく教えてください

Struts2フレームワークに基づくCRUDアプリケーションでは、学生情報の追加、削除、修正、照会などの操作を実装する必要があるため、データベースのテーブル構造を設計し、データベースに対応するテーブルを作成する必要があります。

MySQLデータベースに基づいて学生情報テーブルを設計および作成する手順は次のとおりです。

  1. データ テーブル構造を設計する

学生情報フォームには、次のフィールドが含まれている必要があります。

  • ID:学生番号、主キー。
  • 名前:学生の名前、必須、長さは50文字以内。
  • 性別:学生の性別、必須、値の範囲は「男性」または「女性」です。
  • 年齢:学生の年齢、必須、値の範囲は1~150の整数です。

したがって、次のフィールドを含む “student” という名前のデータベース テーブルをデザインできます。

sqlCopy codeCREATE TABLE `student` (
   `id` int(11) NOT NULL AUTO_INCREMENT,
   `name` varchar(50) NOT NULL,
   `gender` varchar(10) NOT NULL,
   `age` int(11) NOT NULL,
   PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
  1. データベース テーブルを作成する

MySQL データベースでは、次のコマンドを使用して “student” という名前のデータベーステーブルを作成できます。

sqlCopy codeCREATE TABLE student (
  id INT(11) NOT NULL AUTO_INCREMENT,
  name VARCHAR(50) NOT NULL,
  gender VARCHAR(10) NOT NULL,
  age INT(11) NOT NULL,
  PRIMARY KEY (id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

このコマンドは、id、名前、性別、年齢、主キーとしての ID、INT(11) のデータ型、VARCHAR(50) および VARCHAR(10) の 名前と性別のデータ型、および INT(11) としての年齢データ型の <> つのフィールドを含む “student” という名前のデータベース テーブルを作成します。

以上の手順により、MySQLデータベースに「student」という名前のデータベーステーブルを作成し、スチューデントの基本情報を格納し、その後の開発作業のための基本的なデータサポートを提供することができます。

軍亭

続けてください

  1. サンプル データの挿入

CRUD 操作の前に、学生情報テーブルにサンプル データを挿入して、後続のテストとデバッグを容易にすることができます。

次のコマンドを使用して、3 つのサンプル データを学生情報テーブルに挿入できます。

sqlCopy codeINSERT INTO student (name, gender, age) VALUES ('Tom', '男', 20);
INSERT INTO student (name, gender, age) VALUES ('Lucy', '女', 22);
INSERT INTO student (name, gender, age) VALUES ('Jack', '男', 21);

このコマンドは、学生情報テーブルに 3 つのデータ (名前、性別、年齢など) の Tom、Lucy と Jack の基本情報を挿入します。

上記の手順により、MySQL データベースに “student” という名前のデータベーステーブルを作成し、そこにサンプルデータを挿入して、後続の開発作業に基本的なデータサポートを提供できます。

軍亭

続けてください

  1. データベース接続の構成

Java アプリケーションで MySQL データベースにアクセスするには、JDBC (Java Database Connectivity) ドライバーを使用する必要があります。 MySQL JDBC ドライバーの依存関係をプロジェクトに追加し、次を使用してデータベース接続情報を構成できます。

xmlCopy code<property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>
<property name="hibernate.connection.url">jdbc:mysql://localhost:3306/mydb</property>
<property name="hibernate.connection.username">root</property>
<property name="hibernate.connection.password">123456</property>

その中で、com.mysql.jdbc.Driver は MySQL JDBC ドライバーのクラス名、localhost:3306/mydb は MySQL データベースのアドレスとデータベース名、root はデータベースのユーザー名、123456 はデータベースのパスワードです。

上記の手順により、JavaアプリケーションでMySQLデータベースにアクセスでき、接続情報が構成され、後続の開発作業のためのデータアクセスサポートが提供されます。

軍亭

アクションフォーム、アクション、JSPページの実装について詳しく説明してください

Struts2 フレームワークでは、ActionForm、Action、および JSP ページは、要求と応答を処理するための MVC パターンを実装する <> つのコアコンポーネントです。 これら <> つのコンポーネントのそれぞれの実装については、以下で詳しく説明します。

  1. アクションフォームの実装

ActionForm は、ユーザーが送信したフォームデータを、フォームデータを検証および処理するためのさまざまなプロパティとメソッドでカプセル化するために使用されます。 Struts2 フレームワークでは、ActionForm は次の方法で実装できます。

javaCopy codepublic class StudentForm extends ActionForm {

    private int id;
    private String name;
    private String gender;
    private int age;

    // getter和setter方法
}

上記のコードでは、StudentForm は ActionForm クラスを継承し、学生の基本情報をカプセル化するために使用される ID、名前、性別、年齢の 4 つのプロパティを定義します。 実際の開発では、ビジネス ニーズを満たすために、必要に応じてプロパティとメソッドを追加できます。

  1. アクションの実施

アクションは、ビジネス ロジックを実行するメソッドと、要求パラメーターを処理して要求を転送するその他のメソッドを使用して、要求を受信して処理し、処理結果をユーザーに返すために使用されます。 Struts2 フレームワークでは、アクションは次の方法で実装できます。

javaCopy codepublic class StudentAction extends ActionSupport implements ModelDriven<StudentForm> {

    private StudentForm form = new StudentForm();
    private List<Student> students = new ArrayList<Student>();

    @Override
    public StudentForm getModel() {
        return form;
    }

    public String list() {
        // 获取所有学生信息
        students = studentService.getAllStudents();
        return SUCCESS;
    }

    public String add() {
        // 添加学生信息
        studentService.addStudent(form);
        return SUCCESS;
    }

    public String edit() {
        // 编辑学生信息
        studentService.editStudent(form);
        return SUCCESS;
    }

    public String delete() {
        // 删除学生信息
        studentService.deleteStudent(form.getId());
        return SUCCESS;
    }

    // getter和setter方法
}

上記のコードでは、StudentAction は ActionSupport クラスを継承し、フォーム データのカプセル化と処理のための ModelDriven インターフェイスを実装しています。 このクラスには、すべての学生情報の取得、学生情報の追加、学生情報の編集、および学生情報の削除に使用される、一覧表示、追加、編集、および削除の 4 つのメソッドが含まれています。 実際の開発では、ビジネス ニーズを満たすために、必要に応じてメソッドとプロパティを追加できます。

  1. JSPページの実装

JSPページは、データを表示し、通常、フォーム、リンク、ボタンなどの要素を含むユーザー入力を処理するために使用されます。 Struts2 フレームワークでは、JSP ページは以下の方法で実装できます。

htmlCopy code<%@ taglib uri="/struts-tags" prefix="s" %>

<html>
<head>
  <title>学生信息管理系统</title>
</head>
<body>

  <h1>学生信息管理系统</h1>

  <s:form action="list">
    <s:submit value="查询学生信息" />
  </s:form>

  <s:form action="add">
    <s:textfield name="name" label="姓名" />
    <s:radio name="gender" label="性别" list
軍亭

続けてください

phpCopy code<s:submit value="添加学生信息" />

</s:フォーム>

<s:form action=”edit”> <s:hidden name=”id” /> <s:textfield name=”name” label=”姓名” /> <s:radio name=”gender” label=”性别” list=”#{‘男’:’男’,’女’:’女’}” /> <s:textfield name=”age” label=”年龄” /> <s:submit value=”修改学生信息” /> </s:form>

<s:form action=”delete”> <s:hidden name=”id” /> <s:submit value=”删除学生信息” /> </s:form> <table border=”1″> <tr> <th>编号</th> <th>姓名<th> <th>性别</th> <th>年龄</th> <th>操作</th> </tr> <s:iterator value=”students”> <tr> <td><s:property value=”id” /></td> <td><s:property value=”name” /></td> <td><s:property value=”gender” /></td> <td><s:property value=”age” /></td> <td> <s:url id=”editUrl” action=”edit”> <s:param name=”id”><s:property value=”id” /></s:param> </s:url> <s:url id=”deleteUrl” action=”delete”> <s:param name=”id”><s:property value=”id” /></s:param> </s:url> <s:a href=”%{editUrl}”>编辑</s:a> <s:a href=”%{deleteUrl}”>删除</s:a> </td> </tr> </s:iterator> </table> </body> </html> “‘

上記のコードでは、Struts2のタグライブラリを使用して、フォーム、リンク、ボタン、およびその他の要素を生成します。 このページには、リスト、追加、編集、および削除の <> つのフォームがあり、学生情報のクエリ、学生情報の追加、学生情報の編集、および学生情報の削除に使用されます。 すべての学生の基本情報が、編集アクションと削除アクションとともに表に表示されます。 実際の開発では、ビジネス ニーズを満たすために、必要に応じて要素と属性を追加できます。

軍亭

データアクセス層(DAO)の実装方法を詳しく説明してください

Struts2 フレームワークでは、データ・アクセス層 (DAO) を使用して、データベース・アクセスおよびデータ処理機能を含むデータ・パーシスタンスおよび照会操作を実装します。 単純なデータ アクセス層を実装する方法を次に示します。

  1. DAO インターフェイスの定義

まず、データ アクセスの基本的な操作 (追加、削除、変更、クエリなど) をカプセル化する DAO インターフェイスを定義します。

javaCopy codepublic interface StudentDao {

    public void addStudent(Student student);

    public void editStudent(Student student);

    public void deleteStudent(int id);

    public Student getStudentById(int id);

    public List<Student> getAllStudents();

}

上記のコードでは、StudentDaoインターフェイスは、学生情報の追加、学生情報の編集、学生情報の削除、IDに基づく学生情報のクエリ、すべての学生情報の取得など、5つの基本的な操作を定義しています。

  1. DAOはクラスの記述を実装します

次に、DAO インターフェイスで定義されている基本操作を具体的に実装する StudentDao 実装クラスを実装します。

javaCopy codepublic class StudentDaoImpl implements StudentDao {

    private SessionFactory sessionFactory;

    public void setSessionFactory(SessionFactory sessionFactory) {
        this.sessionFactory = sessionFactory;
    }

    @Override
    public void addStudent(Student student) {
        Session session = sessionFactory.getCurrentSession();
        session.save(student);
    }

    @Override
    public void editStudent(Student student) {
        Session session = sessionFactory.getCurrentSession();
        session.update(student);
    }

    @Override
    public void deleteStudent(int id) {
        Session session = sessionFactory.getCurrentSession();
        Student student = (Student) session.get(Student.class, id);
        session.delete(student);
    }

    @Override
    public Student getStudentById(int id) {
        Session session = sessionFactory.getCurrentSession();
        Student student = (Student) session.get(Student.class, id);
        return student;
    }

    @Override
    public List<Student> getAllStudents() {
        Session session = sessionFactory.getCurrentSession();
        Query query = session.createQuery("from Student");
        List<Student> students = query.list();
        return students;
    }

}

上記のコードでは、クラスは StudentDao インターフェイスを実装し、5 つの基本操作の特定の実装メソッドを定義しています。 このクラスには、データベースに接続してデータ テーブルを操作するための SessionFactory プロパティと setSessionFactory メソッドが含まれています。 実際の開発では、ビジネス ニーズを満たすために、必要に応じてメソッドとプロパティを追加できます。

  1. DAO 構成ファイルの書き込み

最後に、データ アクセス層の管理と呼び出しを実装するために、プロジェクト内の DAO 実装クラスに関する情報を構成する必要があります。

xmlCopy code<bean id="studentDao" class="com.example.dao.StudentDaoImpl">
  <property name="sessionFactory" ref="sessionFactory" />
</bean>

上記のコードでは、DAO 実装クラスの管理と呼び出しは、class属性が具象実装クラスのクラス名を指定し、プロパティプロパティが依存関係注入のプロパティ名と依存オブジェクトの参照名を指定するstudentDaoという名前のBeanを構成することによって実装されます。

上記の手順により、学生情報の追加、削除、変更、チェック、その他の操作、およびDAOインターフェイス、DAO実装クラス、およびDAO構成ファイルの提供のための単純なデータアクセス層を実装できます。

軍亭

ビジネスロジック層(サービス)の実装について詳しく教えてください

Struts2フレームワークでは、ビジネスロジック層(Service)を使用して、トランザクション管理、データ検証、データ変換、その他の機能を含むビジネスロジック処理を実装します。 単純なビジネス ロジック層を実装する方法を次に示します。

  1. サービス・インターフェースの定義

まず、ビジネス ロジックの基本操作 (追加、削除、変更、検索など) をカプセル化するサービス インターフェイスを定義します。

javaCopy codepublic interface StudentService {

    public void addStudent(StudentDto studentDto);

    public void editStudent(StudentDto studentDto);

    public void deleteStudent(int id);

    public StudentDto getStudentById(int id);

    public List<StudentDto> getAllStudents();

}

上記のコードでは、StudentService インターフェイスは、学生情報の追加、学生情報の編集、学生情報の削除、ID に基づく学生情報のクエリ、すべての学生情報の取得など、5 つの基本的な操作を定義しています。

  1. サービス実装クラスの記述

次に、サービス インターフェイスで定義されている基本操作を具体的に実装する StudentService の実装クラスを実装します。

javaCopy code@Service("studentService")
@Transactional
public class StudentServiceImpl implements StudentService {

    @Autowired
    private StudentDao studentDao;

    @Override
    public void addStudent(StudentDto studentDto) {
        Student student = new Student();
        BeanUtils.copyProperties(studentDto, student);
        studentDao.addStudent(student);
    }

    @Override
    public void editStudent(StudentDto studentDto) {
        Student student = studentDao.getStudentById(studentDto.getId());
        BeanUtils.copyProperties(studentDto, student);
        studentDao.editStudent(student);
    }

    @Override
    public void deleteStudent(int id) {
        studentDao.deleteStudent(id);
    }

    @Override
    public StudentDto getStudentById(int id) {
        Student student = studentDao.getStudentById(id);
        StudentDto studentDto = new StudentDto();
        BeanUtils.copyProperties(student, studentDto);
        return studentDto;
    }

    @Override
    public List<StudentDto> getAllStudents() {
        List<Student> students = studentDao.getAllStudents();
        List<StudentDto> studentDtos = new ArrayList<>();
        for (Student student : students) {
            StudentDto studentDto = new StudentDto();
            BeanUtils.copyProperties(student, studentDto);
            studentDtos.add(studentDto);
        }
        return studentDtos;
    }

}

上記のコードでは、クラスは StudentService インターフェイスを実装し、5 つの基本操作の特定の実装メソッドを定義します。 このクラスは、Spring の依存関係挿入メカニズムを使用して、@Autowired注釈を介して StudentDao オブジェクトを Service 実装クラスに挿入し、DAO レイヤーへの呼び出しを実装します。 実際の開発では、ビジネス ニーズを満たすために、必要に応じてメソッドとプロパティを追加できます。

  1. サービス構成ファイルの書き込み

最後に、プロジェクト内の Service 実装クラスに関する情報を構成して、ビジネス ロジック層の管理と呼び出しを実装する必要があります。

xmlCopy code<bean id="studentService" class="com.example.service.StudentServiceImpl">
  <property name="studentDao" ref="studentDao" />
</bean>

上記のコードでは、Service実装クラスの管理と呼び出しは、classプロパティが具象実装クラスのクラスを指定するstudentServiceという名前のBeanを構成することによって実装されます。

軍亭

プロジェクトの構造と命名規則を詳しく説明してください

Struts プロジェクトを開発する場合、適切なプロジェクト構造と命名規則により、プロジェクトの保守性と拡張性が向上し、コードがより明確で理解しやすくなります。 一般的に使用される Struts プロジェクトの構造と命名規則を次に示します。

  1. プロジェクト構造

Struts プロジェクトでは、通常、MVC (モデル ビュー コントローラー) パターンが開発に使用されるため、次のディレクトリ構造をお勧めします。

lessCopy code- src/main/java                // Java源代码目录
  - com.example.model          // 存放Model类的目录
  - com.example.dao            // 存放DAO类的目录
  - com.example.service        // 存放Service类的目录
  - com.example.action         // 存放Action类的目录
- src/main/resources           // 资源文件目录
  - applicationContext.xml   // Spring配置文件
  - struts.xml                 // Struts配置文件
- WebContent                   // Web应用根目录
  - WEB-INF                    // WEB-INF目录
    - lib                      // 存放第三方库文件的目录
    - classes                  // 存放编译后的Java类文件的目录
    - spring                   // 存放Spring相关配置文件的目录
    - struts                   // 存放Struts相关配置文件的目录
    - web.xml                  // Web应用配置文件
  - index.jsp                  // 首页文件

上記のディレクトリ構造では、プロジェクトの保守性を向上させるために、Javaソースコード、リソースファイル、およびWebアプリケーションを異なるディレクトリに格納することをお勧めします。

  1. 命名規則

Struts プロジェクトでは、次の命名規則をお勧めします。

  • Javaクラスは、StudentAction、StudentService、StudentDaoなどのラクダの命名法を使用して名前を付ける必要があります。
  • アクション クラスの名前は、StudentAction のように Action で終わる必要があります。
  • DTO クラスの名前は、StudentDto のように DTO で終わる必要があります。
  • DAO クラスの命名は、StudentDao のように Dao で終わる必要があります。
  • サービス クラスには、StudentService などの Service という名前を付ける必要があります。
  • Model クラスには、エンティティ クラスの名前 (Student など) にちなんで名前を付ける必要があります。
  • Struts 構成ファイル内のアクション名は、小文字とダッシュの組み合わせ (/student/show など) にする必要があります。
  • JSP ページには、小文字とアンダースコア (student_list.jsp など) を組み合わせて名前を付ける必要があります。

上記のプロジェクト構造と命名規則に従うことで、プロジェクトの保守性と拡張性を向上させ、コードをより明確で理解しやすくし、エラーの可能性を減らすことができます。

軍亭

パフォーマンスチューニングの推奨事項を詳しく説明してください

Struts プロジェクトを開発する際には、アプリケーションのパフォーマンスと安定性を確保するために、次の点に注意する必要があります。

  1. ページ要求の数を減らす

Web アプリケーションでは、ページ要求はリソースを大量に消費するため、ページ要求の数を最小限に抑えることで、アプリケーションのパフォーマンスを効果的に向上させることができます。 次の方法でページ要求の数を減らすことができます。

  • ページのスタイル設定とスクリプトにCSSファイルとJavaScriptファイルを使用し、HTMLでのスタイルタグとスクリプトタグの使用を避けます。
  • スプライトテクノロジーを使用して複数の画像を1つの画像にマージし、ページリクエストの数を減らします。
  • 大量のデータを表示する場合は、ページネーションとスクロール読み込みを使用して、一度に大量のデータをロードしないようにします。
  1. リダイレクトの使用を避ける

リダイレクトは、クライアント要求を別の URL アドレスにリダイレクトすることであり、追加のネットワーク オーバーヘッドとサーバーの負荷を引き起こす可能性があるため、リダイレクトはできるだけ避ける必要があります。

  1. キャッシュの公正使用

Web アプリケーションでは、キャッシュによってサーバーの負荷を効果的に軽減し、アプリケーションのパフォーマンスを向上させることができます。 キャッシュは、次の方法で使用できます。

  • 静的ファイル(CSS、JavaScript、画像など)の場合、それらをブラウザにキャッシュして、サーバーから各リクエストを取得する必要がなくなります。
  • 動的に生成されたデータは、キャッシュ メカニズムを使用して最適化し、要求ごとにデータを再生成する必要がなくなります。
  1. 多数の Session オブジェクトの使用を避ける

Webアプリケーションでは、Sessionオブジェクトはユーザーセッション情報を格納するために使用されますが、各ユーザーがSessionオブジェクトを使用すると、サーバーのメモリリソースが過剰に消費されるため、多数のSessionオブジェクトを使用しないようにしてください。

  1. データベース接続プールを賢く使用する

データベースを操作する場合は、接続管理にデータベース接続プールを使用して、データベース接続のオーバーヘッドを削減し、アプリケーションのパフォーマンスを向上させる必要があります。 データベース接続プールは、次の方法で使用できます。

  • 接続プールが小さすぎることによる要求の応答の失敗や、大きすぎることによるリソースの浪費を回避するために、適切な接続プール・サイズを設定します。
  • 接続プールのタイムアウト期間を合理的に設定して、接続が長時間占有されることによるリソースの浪費を回避します。
  • アイドル接続リサイクル メカニズムを使用して接続を再利用および解放し、長期的な接続によるリソースの浪費を回避します。

上記のパフォーマンス最適化の提案により、アプリケーションのパフォーマンスと安定性を効果的に向上させることができます。

軍亭

セキュリティに関する推奨事項を詳しく説明してください

Struts プロジェクトを開発する場合、アプリケーションのセキュリティを確保するために、次の点に注意する必要があります。

  1. SQL インジェクション攻撃から保護する

SQLインジェクション攻撃とは、攻撃者が入力ボックスに悪意のあるSQLステートメントを入力して、データベース内のデータを取得または破壊することを指すため、それを防ぐために次の対策を講じる必要があります。

  • ユーザーが入力したデータは、悪意のある SQL ステートメントがデータベースに渡されないように、フィルター処理と検証を行う必要があります。
  • データベース アクセス操作では、文字列連結を直接使用しないように、PreparedStatement または NamedParameterJdbcTemplate を使用する必要があります。
  1. クロスサイトスクリプティング攻撃からの保護

クロスサイトスクリプティング攻撃は、攻撃者が悪意のあるスクリプトをWebサイトに注入してユーザーの情報を取得する場合であるため、それらを防ぐために次の対策を講じる必要があります。

  • ユーザーが入力したデータは、悪意のあるスクリプトがWebサイトに渡らないようにフィルタリングおよび検証する必要があります。
  • ページへのデータ出力は、悪意のあるスクリプトがブラウザで実行されるのを防ぐために、HTMLエスケープする必要があります。
  1. クロスサイトリクエストフォージェリ攻撃からの保護

クロスサイトリクエストフォージェリ攻撃は、Webサイトのリクエストを偽造する攻撃者による悪意のあるアクションであるため、それらを防ぐために次の対策を講じる必要があります。

  • フォーム送信操作では、悪意のある要求の送信を回避するためにトークン検証を追加する必要があります。
  • 機密性の高い操作 (変更や削除操作など) の場合、悪意のある操作を回避するために、ユーザーは 2 回確認する必要があります。
  1. HTTPS プロトコルを適切に使用する

HTTPSプロトコルは、送信中のデータの盗難を回避するために送信データを暗号化できるため、機密データを送信する際の保護にはHTTPSプロトコルを使用する必要があります。

  1. アクセス許可制御を合理的に設定する

Struts プロジェクトでは、許可されたユーザーのみが機密リソースにアクセスできるようにアクセス制御を制御する必要があります。 権限制御は、Strutsの組み込みインターセプターを使用して実行できます。

上記のセキュリティに関する推奨事項により、アプリケーションのセキュリティと安定性を効果的に向上させることができます。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です