コントローラ


Controller (コントローラー) は、ブラウザーによって開始されたすべてのリクエストを処理し、応答コンテンツの論理処理を決定する責任を負います。コントローラーは標準の Java クラスであり、基本クラスを継承する必要はありません。 . クラスを通じてこのメソッドはインターフェースを外部に公開し、このメソッドの戻り値によってブラウザーへの応答の具体的な内容が決まります

以下は WebMVC モジュールでのコントローラーの記述例です。

@Controller
public class DemoController {

    @RequestMapping("/sayhi")
    public IView sayHi() {
        return View.textView("Hi, YMPer!");
    }
}
Tomcat サービスを開始し、アクセスします

http://localhost:8080/sayhi,得到的输出结果将是:Hi, YMPer! 上記のコードから、次の 2 つのアノテーションがあることがわかります:

    @Controller: クラスをコントローラーとして宣言すると、フレームワークが自動的にスキャンしますこのアノテーションを宣言し、起動時にコントローラーとして登録するすべてのクラス
  • name: コントローラー名、デフォルトは "" (このパラメーターはまだ使用されていません);

    singleton: コントローラーがデフォルトであるシングルトンかどうかを指定します。 true;

    @RequestMapping: コントローラー リクエスト パス マッピングを宣言します。スコープ: クラスまたはメソッド。
  • value: コントローラー リクエスト パス マッピング、必須パラメーター。

    メソッド。デフォルトは次のとおりです。 GET メソッド、値の範囲: GET、HEAD、POST、PUT、DELETE、OPTIONS、TRACE;

    header[]: リクエスト ヘッダーに存在する必要があるヘッダー名

    param[]: リクエストに存在する必要があるパラメーター名;

    例 1:
単一でないサンプル コントローラーを作成する、コントローラー メソッドのルールは次のとおりです:

コントローラー メソッドは POST および PUT アクセスのみをサポートします
    リクエスト ヘッダー パラメーターには x- が含まれている必要があります。 requested-with=XMLHttpRequest (つまり、AJAX リクエストであるかどうかを判断するため);
  1. リクエストパラメータに name パラメータが存在する必要があります
@Controller(singleton = false)
@RequestMapping("/demo")
public class DemoController {

    @RequestMapping(value = "/sayhi",
        method = {Type.HttpMethod.POST, Type.HttpMethod.PUT},
        header = {"x-requested-with=XMLHttpRequest"},
        param = {"name=*"})
    public IView sayHi() {
        return View.textView("Hi, YMPer!");
    }
}
例の説明:

@Controller および @RequestMapping アノテーションを使用してコントローラーとコントローラー メソッドを設定する方法

コントローラー メソッドは public で変更する必要があります。そうしないと無効になります。

@RequestMapping アノテーションもコントローラーで宣言されているため、リクエスト パスはコントローラー メソッドのマッピングは次のようになります: /demo/sayhi;

例 2:

上の例は、応答結果を制御する方法を示しています。

注釈を使用して応答ヘッダーのパラメーターを設定します:

from = "china"

age = 18
    • 注釈を使用してビューとコンテンツを返すようにコントローラーを設定します: "Hi, YMPer!"
  1. @Controller
    @RequestMapping("/demo")
    public class DemoController {
    
        @RequestMapping("/sayhi")
        @ResponseView(value = "Hi, YMPer!", type = Type.View.TEXT)
        @ResponseHeader({
                @Header(name = "from", value = "china"),
                @Header(name = "age", value = "18", type = Type.HeaderType.INT)})
        public void sayHi() {
        }
    }
  2. この例では 3 つのアノテーションが使用されています:

    • @ResponseView: コントローラー メソッドがデフォルトでビュー オブジェクトを返すことを宣言します。メソッドに戻り値がない場合、または戻り値が無効な場合にのみ使用されます

      name: ビュー テンプレートファイル パス、デフォルトは "";

      type: ファイル タイプを表示、デフォルトは Type.View.NULL;

    • 値を返すコントローラー メソッドを設定するときに応答ヘッダー パラメーターを追加します。 []: 応答ヘッダー @Header パラメーターのコレクション;
    • @Header: パラメーター転送のみの要求応答ヘッダーのキーと値のペアを宣言します。

    • name: 応答ヘッダーのパラメーター名、必須のパラメーター。応答ヘッダー パラメーターの値、デフォルトは ""; タイプ: 応答ヘッダー パラメーターのタイプ、STRING、INI、DATE をサポート、デフォルトは Type.HeaderType.STRING;