在Spring MVC中,我有一个控制器,可以监听所有发送到/my/app/path/controller/*
的请求。
让我们说/my/app/path/controller/blah/blah/blah/1/2/3
请求。
如何获取/blah/blah/blah/1/2/3
部分,即与处理程序映射定义中的*
匹配的部分。
换句话说,我正在寻找类似于pathInfo
对servlet而不是控制器的东西。
答案 0 :(得分: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 :(得分:1)
在Spring 2.5中,您可以覆盖任何将HttpServletRequest实例作为参数的方法。
org.springframework.web.servlet.mvc.AbstractController.handleRequest
在Spring 3中,您可以向控制器方法添加HttpServletRequest参数,spring会自动将请求绑定到它。 e.g。
@RequestMapping(method = RequestMethod.GET)
public ModelMap doSomething( HttpServletRequest request) { ... }
在任何一种情况下,此对象都与您在servlet中使用的请求对象相同,包括getPathInfo方法。