@RequestMappingノート:
@RequestMappingは、最も頻繁に使用される1つのコメント春のWebアプリケーションです。このアノテーションは、HTTPリクエストの処理方法およびREST MVCコントローラにマッピングされます。
ベース利用要求マッピング
コントローラに着信HTTP要求をルーティングするためのサーブレット処理方法を担うスプリングMVCアプリケーションに、(フロントコントローラ下)するRequestDispatcher。
春のMVCが行わ設定するときは、要求と処理方法の間のマッピングを指定する必要があります。
Webマッピング要求を設定するには、コメントを@RequestMapping費やす必要があります。
@RequestMapping注釈レベルのレベルおよび/または方法コントローラクラスで使用することができます。
注釈は、コントローラにマッピング要求または要求モードの特定のクラスのレベルであろう。後には、さらに処理方法の間のマッピングを指定するためのアノテーション方法の別のレベルを追加することができます。
以下は、クラス及びメソッドで同時アプリケーション@RequestMapping注釈の例です。
@RestController @RequestMapping( "/ホーム" ) のパブリック クラスIndexController { @RequestMapping( "/" ) 文字列は、(){を取得 // ホスト名にマッピングされた:ポート/ホーム/ 復帰 "GETからこんにちは" 。 } @RequestMapping(「/インデックス」) 文字列のインデックス(){ // ホスト名にマッピングされた:ポート/ホーム/インデックス/ リターン「インデックスからこんにちは」。 } }
上記のコードに示すように、/ホームリクエストがGET()メソッドによって処理され、および/ホーム/インデックス要求がインデックスによって処理されるために()。
複数のURIを処理するために@RequestMapping
あなたが要求アップ方法の複数にマッピングすることができ、あなただけがライン上の値で注釈@RequestMapping要求パスリストを追加する必要があります。
@RestController @RequestMapping( "/ホーム" ) パブリック クラスIndexController { @RequestMapping(値 = { "" 、 "/ページ" 、 "ページ*" 、 "ビュー/ *、** / MSG" }) 文字列indexMultipleMapping(){ 戻る「インデックス複数のマッピングからこんにちは。」; } }
このコードでは、あなたが見ることができるように、@のRequestMappingは、ワイルドカードおよびANT-スタイルのパスをサポートしています。このコードの前に、次のURLは、これらindexMultipleMapping()によって処理されます。
ローカルホスト:8080 /ホーム localhostを:8080 /ホーム/ localhostを:8080 /ホーム/ページ はlocalhost:8080 /ホーム/ pageabc はlocalhost:8080 /ホーム/ビュー/ localhostを:8080 /ホーム/ビュー/ビュー
@RequestParam
@RequestParamと@RequestMapping
メソッドパラメータのプロセスパラメータと、@RequestMapping @RequestParam注釈と共に使用は一緒に結合して要求することができます。
使用@RequestParamアノテーションは値または値なしを持つことができるとき。この値は、パラメータは次のように要求処理方法パラメータコードにマッピングする必要が指定します。
@RestController @RequestMapping( "/ホーム" ) パブリック クラスIndexController { @RequestMapping(値 = "/ ID" ) 文字列getIdByValue(@RequestParam( "ID" )文字列PERSONID){ するSystem.out.println( "IDが" + PERSONID ); 返す「value要素とURLのクエリ文字列からIDを取得します」。 } (値@RequestMapping = "/ PERSONID" ) 文字列のgetId(@RequestParamストリングPERSONID){ するSystem.out.printlnを( + "IDが" PERSONID)。 「価値要素なしURLのクエリ文字列からIDを取得します」。 } }
defaultValue値の@RequestParamは要求値をnullにパラメータのデフォルト値を提供するために使用されます。
@RestController @RequestMapping( "/ホーム" ) のパブリック クラスIndexController { @RequestMapping(値 = "/名前" ) 文字列のgetName(@RequestParam(値 = "人"、はdefaultValue = "ジョン" )文字列PERSONNAMEは){ リターン「必須の要素「要求PARAMの。 } }
パラメータを要求する人が空の場合、このコードでは、デフォルト値を処理するのgetName()メソッドは、引数としてジョン受信されます。
@RequestMappingプロパティ:
方法 :
そのようなGET、PUT、POST、DELETE、およびパッチなどのHTTPリクエストのできる処理方法を@RequestMappingのスプリングMVC注釈。
すべての要求は、デフォルトのHTTP GETタイプになります。
リクエストURLのラベリングメソッドの戻り値に限定されるものではなく、要求にマップされていない、要求は、要求、またはGETポストの方法、それらのプロパティの合意によって行うことができます。メソッド定義された条件で作られた場合、リクエストURLは上のマップされた場合でも、それは法を満たしていない対象の物理ページビューに生成して転送することはできません。あなたは、使用されるHTTPリクエストメソッドの型を宣言するために@RequestMappingでメソッドを使用する必要があります。
@RestController @RequestMapping( "/ホーム" ) のパブリック クラスIndexController { @RequestMapping(法 = RequestMethod.GET) 文字列を取得(){ リターン "GETからこんにちは" 。 } @RequestMapping(方法 = RequestMethod.DELETE) 文字列(){削除 復帰 "削除からこんにちは" 。 } @RequestMapping(方法 = RequestMethod.POST) 文字列のポスト(){ リターン "ポストからこんにちは" 。 } @RequestMapping(方法= RequestMethod.PUT) 文字列プット(){ リターン「プットからこんにちは」。 } @RequestMapping(方法 = RequestMethod.PATCH) 文字列のパッチ(){ リターン "パッチからこんにちは" 。 } }
生成します。
その役割は、戻り値はエンコーディングのタイプも、文字の戻り値を設定することができないだけで設定することができる戻り値の型を指定することです。
@Controller @RequestMapping(値 = "/ペット/ {petId}" = "MediaType.APPLICATION_JSON_VALUE" +生成";のcharset = UTF-8" ) @ResponseBody 公共ペットgetPet(@PathVariable列petId、モデルモデル){ // 実装は省略します }
消費:
コンテンツタイプ(Content-Typeの)、例えば、アプリケーション/ JSON、テキスト/ HTMLのプロセスを特定の要求を提出します。
@Controller @RequestMapping(値 = "/ペット"、メソッド= RequestMethod.POSTは、= "アプリケーション/ JSON"消費) 公共 ボイドaddPet(@RequestBodyペットペット、モデルモデル){ // 実装省略 }
ヘッダ:
リクエストのコンテンツ要求メッセージヘッダ狭い範囲のマッピング。
@Controller @RequestMapping( "/オーナー/ {OWNERID}" ) パブリック クラスRelativePathUriTemplateController { @RequestMapping(値 = "/ペット"、メソッド= RequestMethod.GET、ヘッダー= "リファラー= HTTP://www.ifeng.com/" ) 公共 ボイドfindPet(@PathVariable列OWNERID、@PathVariableストリングpetId、モデルモデル){ // 実装は省略 } }
@RestController @RequestMapping( "/ホーム" ) パブリック クラスIndexController { @RequestMapping(値 = "/ヘッド"、ヘッダー= { "コンテンツタイプ= text / plainの" }) 文字列のポスト(){ リターン「マッピングは、ヘッダーと一緒に適用されます" ; } }
@RestController @RequestMapping( "/ホーム" ) パブリック クラス @RequestMapping(値 = "/ヘッド"、ヘッダー= { "コンテンツタイプ= text / plainの" 、 "コンテンツ・タイプ= text / htmlの" })文字列ポスト() { 戻り「マッピングは、ヘッダーとともに適用しました」。 } }
params:
params要素は、さらに、私たちはあなたの要求は(定義された値の値は、メソッドが実行中に入るか、実行していないとき、パラメータの受け渡しの定義された値)にマッピングされている絞り込むことができます。params要素を使用して、あなたは同じURLに対する要求を処理するために、複数の処理方法を作ることができ、かつ要求のこれらのパラメータは同じではありません。あなたはmyParams = myValueは、このフォーマットは、特定のパラメータ値をターゲットにワイルドカードを使用することの要求でサポートされていないパラメータを定義することができます。
@RestController @RequestMapping( "/ホーム" ) パブリック クラスIndexController { @RequestMapping(値 = "/フェッチ"、paramsは= { "PERSONID = 10" }) 文字列のgetParams(@RequestParam( "PERSONID" )文字列ID){ リターン " params属性= "+使用してフェッチされたパラメータIDを。 } @RequestMapping(値 = "/フェッチ"のparams = { "PERSONID = 20" }) 文字列getParamsDifferent(@RequestParam( "PERSONID""フェッチされたパラメータ使用params属性=" + ID; } }
@RequestMappingショートカット:
スプリング4.3はまた、注釈を@RequestMapping組み合わせとして知られるプロセス・レベルのアノテーションの変異体を導入します。組成物は、より良い注釈注釈付き意味的な方法を表現することができます。彼らは、役割が@RequestMappingパッケージのためのものであり、標準的な方法定義されたエンドポイントになってきている果たしました。
GetMappingが音符の組み合わせである@例えば、それのショートカット@RequestMapping(メソッド= RequestMethod.GET)によって再生されます。
レベルの注釈の方法は、以下のバリアントがあります。
@GetMapping
@PostMapping
@PutMapping
@DeleteMapping
@PatchMapping
次のコードは、音符の組み合わせを使用する方法を示しています。
@RestController @RequestMapping( "/ホーム" ) のパブリック クラスIndexController { @GetMapping( "/人" ) 公共 @ResponseBody ResponseEntity <文字列> getPerson(){ 返す 新しい ResponseEntity <文字列>( "GETからの応答" 、HttpStatus.OK) ; } @GetMapping( "/人間/ {ID}" ) 公衆 @ResponseBody ResponseEntityの<string> getPersonById(@PathVariable文字列ID){ 戻り 、新しい( "IDとGETからResponse"をResponseEntity <ストリング> } @PostMapping( "/人間" ) 公衆 @ResponseBody ResponseEntityの<string> postPerson(){ 戻り 新しい ResponseEntityの<string>( "POSTメソッドからの応答" 、HttpStatus.OK)。 } @PutMapping( "/人間" ) 公衆 @ResponseBody ResponseEntityの<string> putPerson(){ 戻り 新しい ResponseEntityの<string>( "PUT方法からの応答" 、HttpStatus.OK)。 } @DeleteMapping( "/人"deletePersonは(){ 戻り 新しい ResponseEntityの<string>( "DELETEメソッドからの応答" 、HttpStatus.OK)。 } @PatchMapping( "/人間" ) 公衆 @ResponseBody ResponseEntityの<string> patchPerson(){ 戻り 新しい ResponseEntityの<string>( "パッチ法からの応答" 、HttpStatus.OK)。 } }
このコードでは、処理方法の各々は、変異体@RequestMapping注釈の組み合わせを使用します。各バリアントは、メソッドの@RequestMappingアノテーションで使用することができますが達成スワップするための属性が、変異型の組み合わせは、まだベストプラクティスです - あなたが設定するアプリケーションに減少ドルノートの組み合わせが主な原因データ、およびコードが読みやすくなります。
:への記事の転載https://blog.csdn.net/sunshine_yg/article/details/80493604