web-dev-qa-db-ja.com

春の@RequestMapping

Springのvalue = "/redirect/{id}"アノテーションにこの種のparam@RequestMappingが表示され続けます。ここで{id}とは何ですか?これはある種のExpression Languageですか?

私が見たもののサンプルコード:

@RequestMapping( value = "/files/{id}", method = RequestMethod.GET )
public void getFile( @PathVariable( "id" )
String fileName, HttpServletResponse response )
{
    try
    {
         // get your file as InputStream
         InputStream is = new FileInputStream("/pathToFile/"+ fileName);
         // copy it to response's OutputStream
         IOUtils.copy( is, response.getOutputStream() );
         response.flushBuffer();
    }
    catch( IOException ex )
    {
         throw new RuntimeException( "IOError writing file to output stream" );
    }

}

私の質問は、マッピングの{id}とは何か、@PathVariableアノテーションとの関係、およびその使用方法についてです。私はウェブからいくつかの情報を赤くしましたが、皆さんからもっと明確な説明を聞いていただければ幸いです。

9
user2785929

_{foo}_値の_@RequestMapping_部分はパス変数であり、要求パラメーターからではなく、URLパスから取得された値を意味します。

たとえば、ユーザーが_/files/foo.Zip_にアクセスする場合、_{id}_は_foo.Zip_と一致し、その値を注釈@PathVariable("id")を持つ変数に格納するようにSpringに指示します。

_@RequestMapping_アノテーション値のURL識別子に複数のパス変数を含めることができ、中括弧内で使用したのと同じIDで_@PathVariable_を使用して、これらの値を変数に挿入できます。

14
Alex

あなたの例では、../files/1または../files/2または../files/3を参照すると、数字は別のファイル名を表していると思います。 @PathVariable( "id")は、1つの目的でさまざまなパラメーター関数を作成する時間を節約するのに役立ちます。

0
soniccol

{id}は、任意のURLクエリ文字列を渡し、@ PathVariable( "id")を使用してそのIDを取得し、引数としてメソッドに渡します。1つのメソッドは、ここでidを変更することでさまざまなリクエストに適合します。ありがとう。

0
Prawin Reddy
@RequestMapping( value = "/files/{id}", method = RequestMethod.GET )
public void getFile( @PathVariable( "id" ) **String id**)
String fileName, HttpServletResponse response )
{
    //your code here
}

pathvariableは、メソッドパラメーターを使用してuriをマップします。ここでidは、リクエストとともに送信するものです。/files/7。

0
anshu