RequestParamと@PathVariableの比較
特殊文字を扱う際の @RequestParam
と @PathVariable
の違いは何ですか?
リクエストパラメータ @RequestParam
では、+
をスペースとして受け付けました。
PathVariableの場合は
+が
+` として受け入れられました。
322
5
特殊文字を扱う際の @RequestParam
と @PathVariable
の違いは何ですか?
リクエストパラメータ @RequestParam
では、+
をスペースとして受け付けました。
PathVariableの場合は
+が
+` として受け入れられました。
@PathVariable
はURIから何らかのプレースホルダーを取得するためのものです(SpringではこれをURI Templateと呼びます)。@RequestParam
はURIからパラメータを取得します。Spring Reference Chapter 16.3.3.3 Binding request parameters to method parameters with @RequestParamを参照してください。URL
http://localhost:8080/MyApp/user/1234/invoices?date=12-05-2013
が2013年12月5日のユーザー1234の請求書を取得する場合、コントローラメソッドは次のようになります。また、リクエストパラメータはオプションにすることができ、Spring 4.3.3の時点ではパス変数もオプションにすることができます3。しかし、これはURLのパス階層を変更し、リクエストマッピングの衝突を引き起こす可能性があることに注意してください。例えば、
/user/invoices
はユーザーnull
の請求書を提供するのか、それとも ID "invoices" を持つユーザーについての詳細を提供するのか?リクエストからクエリパラメータ値にアクセスするために使用される @RequestParam アノテーションです。次のリクエストURLを見てください。
上記のURLのリクエストでは,以下のようにparam1, param2の値にアクセスすることができます.
以下は、@RequestParamアノテーションがサポートするパラメータ一覧です。
@PathVariable
PathVariable*は、受信リクエストのURIで使用されるパターンを特定します。以下のリクエストURLを見てみよう。
上記のURLのリクエストは、Spring MVCでは以下のように記述します。
PathVariableアノテーションは、リクエストURIのテンプレートをバインドするための属性値を1つだけ持っています。一つのメソッドで複数の@PathVariable**アノテーションを使用することは可能です。ただし、同じパターンを持つメソッドが複数ないことを確認してください。
また、もう1つ興味深いアノテーションがあります。 MatrixVariableです。
そして、それに対するControllerの手法
でも有効にする必要があります。
@RequestParamは、http://localhost:8080 / calculation / powなどのクエリパラメーター(静的値)に使用されます?base = 2& ext = 4。
@PathVariableは、http://localhost:8080 / calculation / sqrt / 8などの動的値に使用されます。
application/x-www-form-urlencoded midia typeがスペースを+に変換し、受信機が+をスペースに変換してデータをデコードするのかもしれません。詳細はURLを確認してください。http://www.w3.org/TR/html401/interact/forms.html#h-17.13.4.1。