9

value = "/redirect/{id}"我一直在 Spring的@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注释的关系是什么以及如何使用它?我从网上删除了一些信息,但我会更感激你们能听到更清晰的解释。

4

4 回答 4

14

值中的{foo}部分@RequestMapping是路径变量,表示从 url 路径而不是从请求参数中检索的值。

例如,如果用户访问/files/foo.zip, then{id}将匹配foo.zip并且您告诉 Spring 将该值存储到具有注释的变量中@PathVariable("id")

您可以在注解值的 URL 标识符中包含多个路径变量,并且可以通过使用与花括号内相同的 id@RequestMapping将这些值注入到变量中。@PathVariable

于 2013-10-28T06:03:08.047 回答
0

我认为对于您的示例,通过浏览 ../files/1 或 ../files/2 或 ../files/3 ,数字代表不同的文件名。@PathVariable( "id" ) 帮助您节省时间编写不同的参数函数。

于 2013-10-28T06:01:40.733 回答
0

{id} 是 url 查询字符串,我们传递它可能是什么,并使用 @PathVariable("id") 检索该 id 并作为参数传递给方法,一个方法适合不同的请求,在这里改变 id。谢谢。

于 2013-10-28T06:06:58.087 回答
0
@RequestMapping( value = "/files/{id}", method = RequestMethod.GET )
public void getFile( @PathVariable( "id" ) **String id**)
String fileName, HttpServletResponse response )
{
    //your code here
}

pathvariable 使用方法参数映射您的 uri。这里 id 是您随请求发送的内容,例如。/文件/7。

于 2013-10-28T06:12:25.207 回答