技術共有

Spring MVC 2 入門

2024-07-12

한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina

郵便配達員の使用

前回に引き続き、Postmanの利用について質問させていただきました。
リンクをクリックして https://www.postman.com/downloads/ をダウンロードできます。
ここに画像の説明を挿入します
インストール後、バージョンをアップグレードするように求められますが、「閉じる」をクリックしてください。

データを送信する具体的な手順は次のとおりです。

ここに画像の説明を挿入します
最初に参照できる、より具体的な図もあります。その中のリクエスト パラメーターについては後で説明します。ここに画像の説明を挿入します

ただし、送信する前に IDEA プロジェクトを開始する必要があることに注意してください。そうしないと結果が得られません。
前回のコードを送ります この時点ではアイデアでプロジェクトを開始したので結果は正常ですが、開始しない場合は異常です。

ここに画像の説明を挿入します

Spring MVC を学習する際の 2 番目の重要なポイント - リクエスト

異なるパスにアクセスするということは、異なるリクエストを送信することを意味します。そのため、Spring のリクエストを学習するには、主にバックエンドにパラメータを渡す方法と、バックエンドがパラメータを受け取る方法を学習する必要があります。
パラメータを渡すには、主にブラウザと Postman を使用してシミュレーションします。

単一のパラメータを渡す

まず基本的なエラー メッセージについて説明します。
404: リソースが見つかりません。サーバーまたは URL が間違っている可能性があります。
400: 型が一致しません
500: 渡されたパラメータがほとんどありません

  • パラメータを渡す手順は次のとおりです。 まず、URL を使用してパラメータを渡します (URL を使用してパラメータを渡すことも、Postman を使用してパラメータを渡すこともできますが、ここでは最初に URL を使用して実装します) 。以下に示すように、疑問符の後に続くのは、渡すパラメーターです。名前に一貫性がない場合は、ステータス コード 400 が報告されます。

ここに画像の説明を挿入します

複数のパラメータを渡す

ここに画像の説明を挿入します

パラメータが複数ある場合、フロントエンドとバックエンドがパラメータのマッチングを行う際、パラメータの名前で一致します。このとき、渡したパラメータの名前は仮パラメータと一致するため、パラメータの位置は一致します。バックエンドには影響を与えないので、名前とIDを交換しても問題ありません。
ここに画像の説明を挿入します
実際、オーバーロードと同様の効果が生じる可能性もあります。
ここに画像の説明を挿入します

パス配列

このとき、配列は通常のパラメータとは異なるため、Postman を使用してパラメータを渡すことができます。

ここに画像の説明を挿入します
Postman の KEY は、渡すパラメータと一致している必要があります。そうでない場合は一致しません。つまり、このパラメータには値を割り当てることができないため、デフォルトで null になります。
ここに画像の説明を挿入します

しかし、渡した KEY と異なる場合にパラメータ名を渡す方法はあるのでしょうか? もちろん方法はあります。 @RequestParam アノテーションを使用するだけです。
一部の特殊なケースでは、フロント エンドによって渡されるパラメーター キーとバック エンドによって受信されるキーが一致しない場合があります。たとえば、フロント エンドは array2 をバック エンドに渡し、バック エンドは配列フィールドを使用してそれを受け取ります。 , そのため、パラメータを受信できない状況が発生します。
この場合、@RequestParam を使用してフロントエンドとバックエンドのパラメーター値の名前を変更できます。
ここに画像の説明を挿入します

パスオブジェクト

オブジェクトを渡す方法に興味がある人もいるかもしれませんが、実際には、順序に関係なく、属性を 1 つずつ渡すだけで、KEY は常に仮パラメータと一致するため、順序を気にする必要はありません。
ここに画像の説明を挿入します
以下は Person のコードです。これを呼び出すよりも簡単です。興味があれば、直接コピーして試してみてください。

public class Person {
    private int id;
    private String name;
    private String password;
    public int getId() {
        return id;
    }
    public void setId(int id) {
        this.id = id;
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public String getPassword() {
        return password;
    }
    public void setPassword(String password) {
        this.password = password;
    }
    @Override
    public String toString() {
        return "Person{" +
                "id=" + id +
                ", name='" + name + ''' +
                ", password='" + password + ''' +
                '}';
    }
}

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
パス回収

@RequestParam アノテーションを使用する必要があります。
配列と同様に、同じリクエスト パラメータ名は複数存在することができ、必要に応じて、パラメータ関係をバインドするために @RequestParam を使用する必要があります。コレクションにカプセル化するには、 @RequestParam を使用してパラメータ関係をバインドするには
ここに画像の説明を挿入します
このアノテーションが使用されない場合、500 が報告されます。
ここに画像の説明を挿入します
上記のオブジェクトの受け渡し方法は比較的複雑なので、次回は別のオブジェクトの受け渡し方法である JSON データ表現を紹介します。

残りの質問への答え: @RequestMapping は post または get をサポートしていますか?

上記の例をすべて試したことがある場合は、この問題を自分で説得し検証することができるでしょう。
検証手順は次のとおりです
ここに画像の説明を挿入します

ここに画像の説明を挿入します
ここに画像の説明を挿入します
切り替え後、get と post の両方をサポートできることがわかりました。