春天4有相同的“beforeHandler”吗?

时间:2014-04-17 03:40:16

标签: spring

我有一个带有请求映射的控制器..

@Controller
public class TestController {

    private static final String template = "Hello there, %s!";
    private final AtomicLong counter = new AtomicLong();

    @RequestMapping("/hello")
    public @ResponseBody String hello() {

                      return "Hello";
    }
}

我怎样才能使用户每次进入RequestMapping或者任何url时,调用其他方法将println打印到控制台,用户在实际进入方法“hello”之前所处的URL?

我想使用此方法确保用户将来拥有适当的凭据。我看到有@PreAuthorize注释,但似乎没有与之关联的方法,我可以编写自己的逻辑,即使用当前用户所在的URL对控制台进行简单的println。

1 个答案:

答案 0 :(得分:0)

您有很多选择。

使用Spring,您可以实现并注册HandlerInterceptor并实现其preHandle方法来记录请求URL,您可以使用各种HttpServletRequest方法重新构建请求URL。

使用纯servlet-api,您可以实现并注册自己的Filter,它会记录请求URL,然后使用doFilter(..)继续链接。

您还可以使用AOP,使用记录URL的@RequestMapping建议通知所有@Before带注释的方法。