Struts-2-struts-annotations

提供:Dev Guides
移動先:案内検索

Struts 2-注釈

前述のように、Strutsは2つの形式の構成を提供します。 従来の方法は、すべての構成に struts.xml ファイルを使用することです。 これまでのチュートリアルでは、これに関する非常に多くの例を見てきました。 Strutsを構成するもう1つの方法は、Java 5アノテーション機能を使用することです。 strutsアノテーションを使用して、*ゼロ構成*を実現できます。

プロジェクトで注釈の使用を開始するには、次のjarファイルが WebContent/WEB-INF/lib フォルダーに含まれていることを確認してください-

  • struts2-convention-plugin-x.y.z.jar
  • asm-x.y.jar
  • antlr-x.y.z.jar
  • commons-fileupload-x.y.z.jar
  • commons-io-x.y.z.jar
  • commons-lang-x.y.jar
  • commons-logging-x.y.z.jar
  • commons-logging-api-x.y.jar
  • freemarker-x.y.z.jar
  • javassist-.xy.z.GA
  • ognl-x.y.z.jar
  • struts2-core-x.y.z.jar
  • xwork-core.x.y.z.jar

ここで、 struts.xml ファイルで使用可能な構成を廃止し、注釈に置き換える方法を見てみましょう。

Struts2でのアノテーションの概念を説明するには、リンク:/struts_2/struts_validations [Struts2検証]の章で説明されている検証例を再検討する必要があります。

ここでは、単純なページを使用して名前と年齢をキャプチャする従業員の例を取り上げます。2つの検証を行い、ÜSERが常に名前を入力し、年齢が28〜65の間にあることを確認します。

例のメインJSPページから始めましょう。

メインページを作成

メインページJSPファイル index.jsp を作成します。このファイルは、上記の従業員関連情報を収集するために使用されます。

<%@ page language = "java" contentType = "text/html; charset = ISO-8859-1"
   pageEncoding = "ISO-8859-1"%>
<%@ taglib prefix = "s" uri = "/struts-tags"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
   "http://www.w3.org/TR/html4/loose.dtd">

<html>
   <head>
      <title>Employee Form</title>
   </head>

   <body>

      <s:form action = "empinfo" method = "post">
         <s:textfield name = "name" label = "Name" size = "20"/>
         <s:textfield name = "age" label = "Age" size = "20"/>
         <s:submit name = "submit" label = "Submit" align="center"/>
      </s:form>

   </body>
</html>

index.jspはStrutsタグを使用しますが、これについてはまだ説明していませんが、タグ関連の章でそれらを学習します。 ただし、現時点では、s:textfieldタグが入力フィールドを出力し、s:submitが送信ボタンを出力すると仮定します。 各タグのラベルプロパティを使用して、各タグのラベルを作成しました。

ビューを作成する

定義済みのアクションが SUCCESS を返す場合に呼び出されるJSPファイル success.jsp を使用します。

<%@ page language = "java" contentType = "text/html; charset = ISO-8859-1"
    pageEncoding = "ISO-8859-1"%>
<%@ taglib prefix = "s" uri = "/struts-tags"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
   "http://www.w3.org/TR/html4/loose.dtd">

<html>
   <head>
      <title>Success</title>
   </head>

   <body>
      Employee Information is captured successfully.
   </body>
</html>

アクションを作成

これは、注釈が使用される場所です。 アノテーションを使用してアクションクラス Employee を再定義し、次に Employee.java ファイルに示すように* validate()というメソッドを追加します。 アクションクラスが *ActionSupport クラスを拡張していることを確認してください。そうしないと、validateメソッドが実行されません。

package com.finddevguides.struts2;

import com.opensymphony.xwork2.ActionSupport;
import org.apache.struts2.convention.annotation.Action;
import org.apache.struts2.convention.annotation.Result;
import org.apache.struts2.convention.annotation.Results;
import com.opensymphony.xwork2.validator.annotations.*;

@Results({
   @Result(name = "success", Location = "/success.jsp"),
   @Result(name = "input", Location = "/index.jsp")
})
public class Employee extends ActionSupport {
   private String name;
   private int age;

   @Action(value = "/empinfo")

   public String execute() {
      return SUCCESS;
   }

   @RequiredFieldValidator( message = "The name is required" )

   public String getName() {
      return name;
   }

   public void setName(String name) {
      this.name = name;
   }

   @IntRangeFieldValidator(message = "Age must be in between 28 and 65", min = "29", max = "65")

   public int getAge() {
      return age;
   }

   public void setAge(int age) {
      this.age = age;
   }
}

この例では、いくつかの注釈を使用しました。 私はそれらを一つずつ見ていきましょう-

  • 最初に、 Results 注釈を含めました。 結果注釈は結果のコレクションです。
  • 結果の注釈の下に、2つの結果の注釈があります。 結果の注釈には、executeメソッドの結果に対応する*名前*があります。 これらには、execute()からの戻り値に対応するビューを提供する場所も含まれています。
  • 次の注釈は Action 注釈です。 これは、execute()メソッドを修飾するために使用されます。 Actionメソッドは、アクションが呼び出されるURLである値も受け取ります。
  • 最後に、2つの validation 注釈を使用しました。 name フィールドに必須フィールドバリデーターを、 age フィールドに整数範囲バリデーターを構成しました。 検証用のカスタムメッセージも指定しました。

構成ファイル

本当に struts.xml 構成ファイルは必要ないので、このファイルを削除して web.xml ファイルの内容を確認しましょう-

<?xml version = "1.0" Encoding = "UTF-8"?>
<web-app xmlns:xsi = "http://www.w3.org/2001/XMLSchema-instance"
   xmlns = "http://java.sun.com/xml/ns/javaee"
   xmlns:web = "http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
   xsi:schemaLocation = "http://java.sun.com/xml/ns/javaee
   http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
   id = "WebApp_ID" version = "3.0">

   <display-name>Struts 2</display-name>

   <welcome-file-list>
      <welcome-file>index.jsp</welcome-file>
   </welcome-file-list>

   <filter>
      <filter-name>struts2</filter-name>

      <filter-class>
         org.apache.struts2.dispatcher.FilterDispatcher
      </filter-class>

      <init-param>
         <param-name>struts.devMode</param-name>
         <param-value>true</param-value>
      </init-param>
   </filter>

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

次に、プロジェクト名を右クリックし、[エクスポート]> [WARファイル] をクリックして、WARファイルを作成します。 次に、このWARをTomcatのwebappsディレクトリにデプロイします。 最後に、Tomcatサーバーを起動して、URL *http://localhost:8080/HelloWorldStruts2/index.jsp にアクセスしてみます。 これにより、次の画面が生成されます-

ユーザー入力のメール送信

必要な情報を入力せずに、[送信]ボタンをクリックしてください。 次の結果が表示されます-

エラー

必要な情報を入力しますが、間違った差出人フィールドを入力し、名前を「test」、年齢を30と言い、最後に Submit ボタンをクリックします。 次の結果が表示されます-

成功

Struts 2アノテーションタイプ

Struts 2アプリケーションは、XMLおよびJavaプロパティ構成の代替としてJava 5アノテーションを使用できます。 あなたは、さまざまなカテゴリに関連する最も重要な注釈のリストを確認することができます-

リンク:/struts_2/struts_annotations_types [Struts 2アノテーションタイプ]。