Struts 2では、ほとんどの時間をアクションに費やしています。アクション・クラスにはビジネス・ロジックが含まれ、リソース・バンドルを取得し、データを保持し、検証し、ユーザーに戻すビュー結果ページを選択します。それはStruts 2の心臓部なので、アクションの基本的な概念を理解する必要があります。

1.アクション

Struts 2のアクションでは、インターフェイスや拡張クラスを実装する必要はありませんが、結果ページを返す文字列を返す

execute()

メソッドを実装するだけで済みます。

package com.mkyong.user.action;

public class LoginAction{

   //business logic
    public String execute() {
        return "success";
    }

}

<package name="user" namespace="/User" extends="struts-default">

  <action name="validateUser" class="com.mkyong.user.action.LoginAction">
    <result name="success">pages/welcome.jsp</result>
  </action>

<package>

これで、.action拡張子の接尾辞を使用してアクションにアクセスできます。

http://localhost:8080/Struts2Example/User/validateUser.action

デフォルトの.actionは設定可能ですが、必要に応じて ”

struts.action.extension

“の値を変更してください。

2.オプションのアクションインタフェース

Struts 2には、オプションのアクションインタフェース(

com.opensymphony.xwork2.Action

)が付属しています。このインタフェースを実装することで、便利なメリットがもたらされます。ソースコードを参照してください。

package com.opensymphony.xwork2;

public interface Action {

    public static final String SUCCESS = "success";

    public static final String NONE = "none";

    public static final String ERROR = "error";

    public static final String INPUT = "input";

    public static final String LOGIN = "login";

    public String execute() throws Exception;

}

このインターフェイスは本当にシンプルで、5つの一般的な定数を使用しています:

成功、エラー、なし、入力とロジック

。これで、アクションクラスは定数値を直接使用できます。

package com.mkyong.user.action;

import com.opensymphony.xwork2.Action;

public class LoginAction{

   //business logic
    public String execute() {
        return SUCCESS;
    }

}

Strutsの多くの開発者がこのActionインタフェースを実装するのが好きな理由は分かりませんが、ActionSupportを拡張する方が良いでしょう。

3. ActionSupport

サポートクラス。インタフェースのデフォルト実装を提供するための一般的なプラクティスです。

ActionSupport(

com.opensymphony.xwork2.ActionSupport

)は、いくつかの重要なインターフェースのデフォルト実装を提供する非常に強力で便利なクラスです:

public class ActionSupport implements Action, Validateable,
   ValidationAware, TextProvider, LocaleProvider, Serializable {
 ...
}

  • ActionSupport ** クラスでは、次のことが可能です。

  • 1。 Validation

    – validate()メソッドを宣言し、内部に検証コードを入れます。

    2。テキストローカライゼーション** – リソースバンドルからメッセージを取得するには、GetText()メソッドを使用します。

package com.mkyong.user.action;

import com.opensymphony.xwork2.ActionSupport;

public class LoginAction extends ActionSupport{

    private String username;
    private String password;

    public String getPassword() {
        return password;
    }

    public void setPassword(String password) {
        this.password = password;
    }

    public String getUsername() {
        return username;
    }

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

   //business logic
    public String execute() {

        return "SUCCESS";

    }

       //simple validation
    public void validate(){
        if("".equals(getUsername())){
            addFieldError("username", getText("username.required"));
        }
        if("".equals(getPassword())){
            addFieldError("password", getText("password.required"));
        }
    }
}

ほとんどの場合、そうでない理由がない限り、便利な機能のためにこのクラスを拡張する必要があります。これは、Struts 2の重要なインターフェースの実装方法を理解するのにもとても良い学習クラスです。

4.アクション注釈

Struts 2はアノテーションを非常にうまくサポートしています。XMLファイルを取り除き、アクションクラスの

@ action

に置き換えることができます。

package com.mkyong.user.action;

import org.apache.struts2.convention.annotation.Action;
import org.apache.struts2.convention.annotation.Namespace;
import org.apache.struts2.convention.annotation.Result;
import org.apache.struts2.convention.annotation.ResultPath;

import com.opensymphony.xwork2.ActionSupport;

@Namespace("/User")
@ResultPath(value="/")
public class ValidateUserAction extends ActionSupport{

    @Action(value="Welcome", results={
        @Result(name="success",location="pages/welcome__user.jsp")
    })
    public String execute() {

        return SUCCESS;

    }
}

Struts 2アノテーションについてもっと知りたい場合は、このリンクをダウンロードしてください://struts2/struts-2-hello-world-annotation-example/[Struts 2アノテーションの例]

結論

簡単に言えば、

ActionSupport

クラスを拡張するだけで、ほとんどの場合に適しています。