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
アノテーションとの関係、およびその使用方法についてです。私はウェブからいくつかの情報を赤くしましたが、皆さんからもっと明確な説明を聞いていただければ幸いです。
_{foo}
_値の_@RequestMapping
_部分はパス変数であり、要求パラメーターからではなく、URLパスから取得された値を意味します。
たとえば、ユーザーが_/files/foo.Zip
_にアクセスする場合、_{id}
_は_foo.Zip
_と一致し、その値を注釈@PathVariable("id")
を持つ変数に格納するようにSpringに指示します。
_@RequestMapping
_アノテーション値のURL識別子に複数のパス変数を含めることができ、中括弧内で使用したのと同じIDで_@PathVariable
_を使用して、これらの値を変数に挿入できます。
あなたの例では、../files/1または../files/2または../files/3を参照すると、数字は別のファイル名を表していると思います。 @PathVariable( "id")は、1つの目的でさまざまなパラメーター関数を作成する時間を節約するのに役立ちます。
{id}は、任意のURLクエリ文字列を渡し、@ PathVariable( "id")を使用してそのIDを取得し、引数としてメソッドに渡します。1つのメソッドは、ここでidを変更することでさまざまなリクエストに適合します。ありがとう。
@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。