クイックストラット2イントロ
1. 前書き
Apache Struts 2は、エンタープライズJavaWebアプリケーションを開発するためのMVCベースのフレームワークです。 これは、元のStrutsフレームワークを完全に書き直したものです。 オープンソースAPI実装と豊富な機能セットがあります。
In this tutorial, we will have a beginner’s introduction to different core components of the Struts2 framework.さらに、それらの使用方法を示します。
2. Struts 2フレームワークの概要
Struts 2の機能の一部は次のとおりです。
-
POJO(プレーンな古いJavaオブジェクト)ベースのアクション
-
REST、AJAX、Hibernate、Springなどのプラグインサポート
-
構成より規約
-
さまざまなビューレイヤー技術のサポート
-
プロファイリングとデバッグの容易さ
2.1. Struts2のさまざまなコンポーネント
Struts2はMVCベースのフレームワークであるため、次の3つのコンポーネントがすべてのStruts2アプリケーションに存在します。
-
POJOクラスであるAction class –(POJOは、タイプ階層の一部ではなく、スタンドアロンクラスとして使用できることを意味します)。ここでビジネスロジックを実装します
-
Struts2ではController –、HTTPフィルターがコントローラーとして使用されます。基本的に、リクエスト/レスポンスの傍受や検証などのタスクを実行します
-
View –は、処理されたデータを表示するために使用されます。通常はJSPファイルです
3. アプリケーションの設計
Webアプリの開発を進めましょう。 これは、ユーザーが特定のCarブランドを選択し、カスタマイズされたメッセージで迎えられるアプリケーションです。
3.1. Mavenの依存関係
次のエントリをpom.xmlに追加しましょう。
org.apache.struts
struts2-core
2.5.10
org.apache.struts
struts2-junit-plugin
2.5.10
org.apache.struts
struts2-convention-plugin
2.5.10
依存関係の最新バージョンはhereにあります。
3.2. ビジネスの論理
特定の入力値のメッセージを返すアクションクラスCarActionを作成しましょう。 CarActionには、carName(ユーザーからの入力を格納するために使用)とcarMessage(表示されるカスタムメッセージを格納するために使用)の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クラスはCarMessageServiceを使用し、Carブランドのカスタマイズされたメッセージを提供します。
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ファイルの内容です:
<form>タグは、アクションを指定します(この場合、GET要求の送信先となるHTTP URIです)。
3.4. コントローラー部分
StrutsPrepareAndExecuteFilterはコントローラーであり、すべての着信要求をインターセプトします。 次のフィルターをweb.xml:に登録する必要があります
struts2
org.apache.struts2.dispatcher.filter.StrutsPrepareAndExecuteFilter
struts2
/*
StrutsPrepareAndExecuteFilterは、ワイルドカードに一致するURLを指定しているため、すべての着信要求をフィルタリングします<url-pattern>/ url-pattern> *
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()メソッドから返されます。 This is the default method name which will be executed。
2番目の部分であるlocation,は、execute()メソッドが値を返した後に参照されるファイルを示します。 ここでは、execute()が値「success」の文字列を返す場合、リクエストをresult.jspに転送する必要があることを指定しています。
同じ構成は、XML構成ファイルを提供することで実現できます。
/result.jsp
3.6. 景色
これは、ユーザーにメッセージを表示するために使用されるresult.jspの内容です。
<%@ page contentType="text/html; charset=UTF-8" %>
<%@ taglib prefix="s" uri="/struts-tags" %>
Hello example User
You are a
ここで注意すべき重要な点が2つあります。
-
<@taglib prefix=”s” uri=”/struts-tags %>でstruts-tagsライブラリをインポートしています
-
<s:property value=”carMessage”/>では、struts-tagsライブラリを使用してプロパティcarMessageの値を出力しています。
4. アプリケーションを実行する
このWebアプリは、Apache Tomcatなどの任意のWebコンテナーで実行できます。 これらを達成するために必要な手順は次のとおりです。
-
Webアプリをデプロイした後、ブラウザーを開き、次のURLにアクセスします:http://www.localhost.com:8080/MyStrutsApp/input.jsp
-
2つのオプションのいずれかを選択して、リクエストを送信します
-
選択した入力オプションに基づいてカスタマイズされたメッセージとともに、result.jspページに転送されます
5. 結論
このチュートリアルでは、最初のStruts2 Webアプリケーションを作成する方法を段階的にガイドしました。 Struts2ドメインのさまざまなMVC関連の側面を取り上げ、開発のためにそれらを組み合わせる方法を示しました。
いつものように、このチュートリアルはMavenプロジェクトとしてover on Githubにあります。