Spring MVCの注釈と@PathVariableで@RequestParam違い

使用方法と役割@PathVariable注釈

結合マッピングURLプレースホルダ

新機能spring3.0:要求パス値のプレースホルダーを受け取ります

URLによって@PathVariableことができるプレースホルダパラメータにバインドされた治療パラメータの制御基準に注釈@PathVariable(「XXX」)の方法による操作に結合させることができる{XXX}プレースホルダでURL:でインチ

  1. @RequestMapping(値= "/インデックス/ {ID}"
  2. 経路リクエスト:HTTP:// localhostを:8080 /こんにちは/ユーザー/インデックス/ 1
    @RequestMapping(値= "/インデックス/ {ID}"、方法= RequestMethod.GET)
     パブリック文字列インデックス(@PathVariable( "ID")のint ID){
        System.out.println( "GETユーザー:" + ID);
        戻る「成功」
    }

 

パラメータ制御方法に要求パラメータを結合@RequestParam

コントローラの基準方法に、要求を示す必要なパラメータ、真のデフォルトは、パラメータに対応するパラメータを含み、そうでない場合に必要があるかどうかに必要な属性を指定し、value属性は、パラメータの名前を指定し、パラメータを渡す@RequestParam注釈メソッドを要求することができます例外がスローされます。

要求パス:HTTP:// localhostの:? 8080 /こんにちは/ユーザー/ requestParam LOGINNAME = kJの= 123&loginPwd

    ( "/ requestParam" @RequestMapping パブリック文字列requestParam(@RequestParam(値= "ログイン名")文字列ログイン名、@ RequestParam(値= "loginPwd" 文字列loginPwd){
        System.out.println( "ログイン名:" +ログイン名+ "loginPwd:" + loginPwd)。
        戻る「成功」
    }

 

違い

1.用法の違い: 

これは、名前からわかるように、パスを受けるためのPathVariableのみURLパラメータ、および要求バンドを受信するための唯一のRequestParam paramsは。

パッケージcom.lrm.springbootdemo.web。

輸入 org.springframework.web.bind.annotation *。;

輸入はjava.util.ArrayList;
輸入java.util.HashMapを;
輸入はjava.util.List;
輸入java.util.Map;

@RestController
@RequestMapping( "/ API / V1" パブリック クラスHelloController {

    (@GetMapping "/書籍/ {ユーザー名}" パブリックオブジェクトtestPathVariable(@PathVariable文字列名){
        地図 <文字列、オブジェクト>マップ= 新しい HashMapの<> ();
        map.put( "ユーザ名" 、ユーザ名)。
        リターンマップ。
    }

    (@PostMapping "/ books2" のパブリックオブジェクトtestRequestParam(@RequestParam( "名前" )文字列名、
                       @RequestParam( "作者" )文字列の作者、
                       @RequestParam( "ISBN" 文字列ISBN){
        地図 <文字列、オブジェクト>ブック= 新しい HashMapの<文字列、オブジェクト> ();
        book.put( "名前" 、名);
        book.put( "作者" 、作者);
        book.put( "ISBN" 、ISBN)。
        リターン・ブック。
    }


    @PostMapping( "/ books2 / {ID}" パブリックオブジェクト試験(@PathVariable( "ID")長い ID、@ RequestParam( "名前" )文字列名、
                       @RequestParam( "作者" )文字列の作者、
                       @RequestParam( "ISBN" 文字列ISBN){
        地図 <文字列、オブジェクト>ブック= 新しい HashMapの<文字列、オブジェクト> ();
        book.put( "ID" 、ID)。
        book.put( "名前" 、名);
        book.put( "作者" 、作者);
        book.put( "ISBN" 、ISBN)。
        リターン・ブック。
    }
}

ユーザ名パラメータはパスurlパラメータに担持されているため、ユーザ名パラメータtestPathVariableこの方法は、@PathVariableを受信するために使用することができます。ユーザー名は受け入れることRequestParamを使用することはできません。
この方法は、testRequestParam使用することができます
ローカルホスト:? 8080 / API / V1 / books2 / 12名=アクション&著者でJava = RIC&ISBN = dsdas2334は
テープのみの要求を受信するためのRequestParamをparamsはいるので、このモードを要求し、testPathVariableではありません上記名、著者、ISBNコードのパラメータを受け取ります。

2.異なる内部パラメータ

PathVariable値、名前は、3つのパラメータを必要としていた、とRequestParamは、これら3つのパラメータ、およびPathVariableよりマルチパラメータはdefaultValueを持っています

(要求は、対応する可変パラメータの本体が含まれていない場合、このパラメータが使用され、変数パラメータはデフォルト値はdefaultValueを指定しました)

3.PathVariableは、一般的に使用され、削除要求、RequestParam一般的に用いられてPOSTリクエストを取得します。

 

おすすめ

転載: www.cnblogs.com/kjitboy/p/12191251.html