2

这是我的@RequestMapping注释:

  @RequestMapping({"/loginBadCredentials", "/loginUserDisabled", "/loginUserNumberExceeded"})
  public String errorLogin(...){        
            ... 
        }

在方法errorLogin中,有没有办法知道三个 url 中的哪一个被“调用”?

4

3 回答 3

3

添加HttpServletRequest为您的参数并使用它来查找当前请求路径。

更新:Spring还提供RequestContextHolder

ServletRequestAttributes attributes = (ServletRequestAttributes) RequestContextHolder.currentRequestAttributes();
String currentReqUri = attributes.getRequest().getRequestURI();

在我看来,第一种方法更好,更容易测试。

于 2016-01-21T09:33:29.997 回答
3

您可以将 HttpServletRequest 注入方法参数中,然后获取调用的 uri。

  @RequestMapping({"/loginBadCredentials", "/loginUserDisabled", "/loginUserNumberExceeded"})
  public String errorLogin(HttpServletRequest request) {        
            String uri = request.getRequestURI(); 
            // do sth with the uri here
  }
于 2016-01-21T09:34:34.417 回答
1

最简单的方法是注入 HttpServletRequest 并获取 uri:

@RequestMapping({"/loginBadCredentials", "/loginUserDisabled", "/loginUserNumberExceeded"})
public String errorLogin(HttpServletRequest request) {        
        String uri = request.getRequestURI(); 
        // switch on uri what you need to do
}
于 2016-01-21T10:12:08.947 回答