获取URI路径中的变量

8
在Spring MVC中,我有一个控制器,它监听所有请求到达/my/app/path/controller/*。
假设有一个请求到达/my/app/path/controller/blah/blah/blah/1/2/3。
我该如何获取/blah/blah/blah/1/2/3部分,即与处理程序映射定义中的*匹配的部分。
换句话说,我正在寻找类似于servlet的pathInfo但适用于控制器的东西。
2个回答

8
在Spring 3中,您可以使用@PathVariable注释来获取URL的部分。
以下是一个快速示例,来源于http://blog.springsource.com/2009/03/08/rest-in-spring-3-mvc/
@RequestMapping(value="/hotels/{hotel}/bookings/{booking}", method=RequestMethod.GET)
public String getBooking(@PathVariable("hotel") long hotelId, @PathVariable("booking") long bookingId, Model model) {
    Hotel hotel = hotelService.getHotel(hotelId);
    Booking booking = hotel.getBooking(bookingId);
    model.addAttribute("booking", booking);
    return "booking";
}

1
在Spring 2.5中,您可以重写任何以HttpServletRequest实例为参数的方法。

org.springframework.web.servlet.mvc.AbstractController.handleRequest

在Spring 3中,您可以将HttpServletRequest参数添加到控制器方法中,Spring会自动将请求绑定到它上面。 例如:
    @RequestMapping(method = RequestMethod.GET)
    public ModelMap doSomething( HttpServletRequest request) { ... }

无论哪种情况,这个对象都是与servlet中使用的请求对象相同的对象,包括getPathInfo方法。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接