Springmvcはマップを使用してリクエストパラメータの分析を受け取ります

SpringMVCはMapを使用してリクエストパラメータの分析を受け取ります

最初のケースでは、何も設定されず、パラメータも渡されません。

@Controller @RequestMapping として注釈が付けられます

渡された BindingAwareModelMap 型が SpringMVC であることがわかります。SpringMVC の暗黙的モデルはこの型です。そのスコープはリクエスト フィールドと同等です。Model パラメーターと ModelMap パラメーターを追加するとき、SpringMVC は実際にこの暗黙的モデルを渡します。この暗黙的なモデルでは、返されたページのリクエスト フィールドを通じて値を取得できます。

2 番目のケースでは、パラメータを追加してみてください => .../testmap?test1=2342

結果の型は同じであり、パラメータは渡されません。もちろん、リクエストを使用してパラメータを取り出すこともできます。

3 番目のケースでは、@RequestParam アノテーションを Map パラメータに追加します。

  1. リクエストの取得 => http://localhost:8080/ssm/v2/testmap?test1=234234

  パラメーターは正常に渡されました。Map タイプは LinkedHashMap であり、暗黙的なモデルではないことに注意してください。

  別の Model パラメーターを追加して、暗黙的モデルにまだ値がないかどうかを確認します。

  したがって、 @RequestParam アノテーションを追加した後、SpringMVC は Get リクエストを対応するパラメータにカプセル化し、パラメータが Map の場合は、暗黙的なモデルを渡すのではなく、LinkedHashMap としてカプセル化されます。

  2. リクエストを投稿し、投稿リクエストをテストします

  結果は Get と一致します。パラメーターに @RequestParam アノテーションがない場合、Map は暗黙的なモデルを受け取ります。@RequestParam アノテーションが追加される場合、Map は LinkedHashMap を受け取ります。暗黙的なモデルには値がありません。

4 番目のケースでは、@RequestBody アノテーションを Map パラメーターに追加し、リクエスト メソッドは Post です。

予期せず、これは正常に渡されました。結果は @RequestParam アノテーションと似ており、これも LinkedHashMap です。

複雑な Json データも解析して正常に受信できます。

 

要約する

SpringMVC がリクエストを処理し、Map 型を使用してパラメータを受け取るときに、パラメータに注釈がない場合は、Model および ModelMap パラメータと同等の BindingAwareModelMap 型が渡されます。

@RequestParam アノテーションがパラメータに追加されると、パラメータはパッケージ化されて LinkedHashMap オブジェクトと呼ばれます。パラメータのキーは Map のキーであり、パラメータの値は Map のキーです。Get をサポートしています。 Post メソッド (Put と Delete をサポートする必要がありますが、テストされていません。この 2 つのメソッドは Post に似ています)。

@RequestBody アノテーションを追加すると、受信した Json 型データも LinkedHashMap オブジェクトにパッケージ化されます。このアノテーションは Get リクエストをサポートしません。Get リクエストはリクエスト本文なしで Json を渡すことはできません。

おすすめ

転載: blog.csdn.net/weixin_38340874/article/details/120263236