在多路径控制器方法中确定路由

时间:2016-07-08 13:25:13

标签: java spring spring-mvc spring-boot controller

在Spring MVC中定义了控制器中的多路径方法

@RequestMapping(value={"/path", "/path2"}, method = RequestMethod.GET)
public String MyMethod () {
  // Determine which route invoked the method
  return null;
}

有没有办法确定哪个路由调用了该方法?

感谢您的帮助。

2 个答案:

答案 0 :(得分:2)

我相信你可以使用HttpServletRequest:

@RequestMapping(value={"/path.html", "/path2.html"}, method = RequestMethod.GET)
public String MyMethod (HttpServletRequest request) {
  // Determine which route invoked the method
  String url = new String(request.getRequestURL());
  log.debug("URL: " + url); //use whatever you use to log
  return null;
}

答案 1 :(得分:2)

您可以使用HttpServletRequest具有名为getRequestURL()的方法来检索实际的网址,以便您解析使用的路径。

然而,另一种可能性是使用路径变量:

@RequestMapping(value = "/{path}", method = RequestMethod.GET)
public String myMethod(@PathVariable String path) {
    // Do stuff with "path"
    return null;
}

在这种情况下,path变量将包含您输入的与@RequestMapping中给出的路径相匹配的内容,在您的情况下,它将是"path""path2"。但是,这也会允许其他路径变量(例如"path3",...),因此您可能希望在使用之前先验证它。