1前書き


Apache Struts 2

は、エンタープライズJava Webアプリケーションを開発するためのMVCベースのフレームワークです。元のStrutsフレームワークを完全に書き直したものです。オープンソースのAPI実装と豊富な機能セットを持っています。

  • このチュートリアルでは、Struts2フレームワークのさまざまなコアコンポーネントについて初心者向けに紹介します** さらに、それらの使い方についても説明します。


2 Struts 2フレームワークの概要

Struts 2の機能のいくつかは以下のとおりです。

  • POJO(プレーンオールドJavaオブジェクト)ベースのアクション

  • REST、AJAX、Hibernate、Springなどのプラグインサポート

  • 設定に関する規約

  • さまざまなビューレイヤテクノロジのサポート

  • プロファイリングとデバッグが簡単


2.1. Struts2

のさまざまなコンポーネント

Struts2はMVCベースのフレームワークなので、次の3つのコンポーネントがすべてのStruts2アプリケーションに存在します。


  1. アクションクラス –

    POJOクラスです(POJOはの一部ではないことを意味します

任意の型階層で、スタンドアロンクラスとして使用できます。私達はします
ここにビジネスロジックを実装する


Controller –

Struts 2では、HTTPフィルタがコントローラとして使用されます。彼ら

インターセプトや検証などのタスクを基本的に実行する
リクエスト/レスポンス


View –

は処理したデータを表示するために使用されます。通常はJSPです

ファイル


3アプリケーションの設計

Webアプリの開発を進めましょう。これは、ユーザーが特定の

Car

ブランドを選択し、カスタマイズされたメッセージに迎えられるアプリケーションです。


3.1. Mavenの依存関係


pom.xml

に次のエントリを追加しましょう。

<dependency>
    <groupId>org.apache.struts</groupId>
    <artifactId>struts2-core</artifactId>
    <version>2.5.10</version>
</dependency>
<dependency>
    <groupId>org.apache.struts</groupId>
    <artifactId>struts2-junit-plugin</artifactId>
    <version>2.5.10</version>
</dependency>
<dependency>
    <groupId>org.apache.struts</groupId>
    <artifactId>struts2-convention-plugin</artifactId>
    <version>2.5.10</version>
</dependency>

依存関係の最新版はhttps://search.maven.org/classic/#search%7Cga%7C1%7Cg%3A%22org.apache.struts%22[ここ]にあります。


3.2. ビジネスの論理

特定の入力値に対するメッセージを返すアクションクラス

CarAction

を作成しましょう。

CarAction

には2つのフィールドがあります。

public class CarAction {

    private String carName;
    private String carMessage;
    private CarMessageService carMessageService = new CarMessageService();

    public String execute() {
        this.setCarMessage(this.carMessageService.getMessage(carName));
        return "success";
    }

   //getters and setters
}


CarAction

クラスは

Car

ブランドのカスタマイズされたメッセージを提供する

CarMessageService

を使用します。

public class CarMessageService {

    public String getMessage(String carName) {
        if (carName.equalsIgnoreCase("ferrari")){
            return "Ferrari Fan!";
        }
        else if (carName.equalsIgnoreCase("bmw")){
            return "BMW Fan!";
        }
        else {
            return "please choose ferrari Or bmw";
        }
    }
}


3.3. ユーザー入力を受け入れる

アプリケーションのエントリポイントである

JSP

を追加しましょう。これは

input.jsp

ファイルの内容です。

<body>
    <form method="get" action="/struts2/tutorial/car.action">
        <p>Welcome to Baeldung Struts 2 app</p>
        <p>Which car do you like !!</p>
        <p>Please choose ferrari or bmw</p>
        <select name="carName">
            <option value="Ferrari" label="ferrari"/>
            <option value="BMW" label="bmw"/>
         </select>
        <input type="submit" value="Enter!"/>
    </form>
</body>

<


_form

_

>タグはアクションを指定します(この例では、GETリクエストの送信先となるHTTP URIです)。


3.4. コントローラー部


StrutsPrepareAndExecuteFilter

はすべての着信要求を傍受するコントローラです。 __web.xmlに次のフィルタを登録する必要があります。

<filter>
    <filter-name>struts2</filter-name>
    <filter-class>org.apache.struts2.dispatcher.filter.StrutsPrepareAndExecuteFilter</filter-class>
</filter>

<filter-mapping>
    <filter-name>struts2</filter-name>
    <url-pattern>/** </url-pattern>
</filter-mapping>

ワイルドカード


<url-pattern>/


</url-pattern> ** に一致するURLを指定しているので、

StrutsPrepareAndExecuteFilter

はすべての着信要求をフィルタリングします。


3.5. アプリケーションの設定

アクションクラス

Car

に次のアノテーションを追加しましょう。

@Namespace("/tutorial")
@Action("/car")
@Result(name = "success", location = "/result.jsp")

この注釈の論理を理解しましょう。


@



__

Namespace


__は、さまざまなアクションクラスの要求URIを論理的に分離するために使用されます。この値をリクエストに含める必要があります。

さらに、


@ Action


は、

Action

クラスにヒットする要求URIの実際のエンドポイントを示します。アクションクラスは

CarMessageService

を調べて、別のメンバ変数

carMessage

の値を初期化します。

execute()

メソッドが値「

“success”

を返した後、

result.jsp

を呼び出すためにその値と一致します

最後に、


@ Result


には2つのパラメータがあります。最初のもの、

name、

は、

Action

クラスが返す値を指定します。この値は、

Action

クラスの

execute()

メソッドから返されます。

これは実行されるデフォルトのメソッド名です

2番目の部分

locationは、

execute()

メソッドが値を返した後に参照されるファイルを示します。ここでは、

execute()

が値 ”

success

“を持つStringを返すときに、リクエストを

result.jsp__に転送する必要があることを指定しています。

XML構成ファイルを提供することで、同じ構成を実現できます。

<struts>
    <package name="tutorial" extends="struts-default" namespace="/tutorial">
        <action name="car" class="com.baeldung.struts.CarAction" method="execute">
            <result name="success">/result.jsp</result>
        </action>
    </package>
</struts>


3.6. 景色

これは

result.jsp

の内容で、ユーザーにメッセージを表示するために使用されます。

<%@ page contentType="text/html; charset=UTF-8" %>
<%@ taglib prefix="s" uri="/struts-tags" %>
<body>
    <p> Hello Baeldung User </p>
    <p>You are a <s:property value="carMessage"/></p>
</body>

ここで注意することが2つあります。



  • <@ taglib prefix =” s” uri =”/struts-tags%> __インポート中


struts-tags

ライブラリ
**

<s:property value =” carMessage”/>

では

struts-tags

を使用しています

プロパティの値を表示するためのライブラリ

carMessage


4アプリケーションの実行

このWebアプリは、Apache Tomcatなどの任意のWebコンテナで実行できます。これらはそれを達成するために必要な手順です。

  1. Webアプリをデプロイしたら、ブラウザを開いて以下にアクセスします.

URL:


http://www.localhost.com:8080/MyStrutsApp/input.jsp


。 2つのオプションのうち1つを選択してリクエストを送信する

  1. カスタマイズされたメッセージとともに

    result.jsp

    ページに転送されます.

選択した入力オプションに基づく


5結論

このチュートリアルでは、最初のStruts2 Webアプリケーションを作成する方法をステップバイステップガイドで説明しました。 Struts2ドメインでのMVC関連のさまざまな側面をカバーし、それらを開発のためにまとめる方法を示しました。

いつものように、このチュートリアルはMavenプロジェクトとしてhttps://github.com/eugenp/tutorials/tree/master/struts-2[over Github]で見つけることができます。