Java 当多个url映射到同一控制器方法时,查找用于访问控制器的url

Java 当多个url映射到同一控制器方法时,查找用于访问控制器的url,java,spring,spring-mvc,model-view-controller,Java,Spring,Spring Mvc,Model View Controller,我明白了 现在我有一个方法定义为 @RequestMapping(value = {"/aaa", "/bbb", "/ccc/xxx"}, method = RequestMethod.POST) public String foo() { // was it called from /aaa or /bbb } 在运行时,我想知道控制器是从/aaa还是/bbb调用的,您可以使用: 返回此请求的URL中调用servlet的部分。这 路径以“/”字符开头,包括servlet名称或 或s

我明白了

现在我有一个方法定义为

@RequestMapping(value = {"/aaa", "/bbb", "/ccc/xxx"}, method = RequestMethod.POST)
public String foo() {
    // was it called from /aaa or /bbb
}
在运行时,我想知道控制器是从
/aaa
还是
/bbb

调用的,您可以使用:

返回此请求的URL中调用servlet的部分。这 路径以“/”字符开头,包括servlet名称或 或servlet的路径,但不包括任何额外的路径 信息或查询字符串

详情如下:

@RequestMapping(value = {"/aaa", "/bbb", "/ccc/xxx"}, method = RequestMethod.POST)
public String foo(HttpServletRequest request) {
  String path = request.getServletPath(); // -> gives "/aaa", "/bbb" or "/ccc/xxx"
}

您可以使用HttpServletRequest::getRequestURL,然后将其剥离并解析uri。而不是将HttpServletRequest对象作为您可以使用的每个控制器方法的参数传递。看看这个