0

这是我的问题

我想在任何 spring 控制器调用之前拦截请求,检查和修改请求 URI。之后它必须调用另一个 SPRING 控制器方法。

我使用了 mvc:interceptors 但是我想用注释来配置它,这就是我需要@Aspect 解决方案的原因。一切正常,但控制器调用了两次,用于原始请求和新请求。使用拦截器我返回 false 并取消它,我该如何处理 Aspect 类?谢谢

这是我的代码:

@Component
@Aspect
public class TestAspect {

    @Before("execution(* mycontroller.*(..))  &&" + "args(request,response)")
    public void interceptUrl(HttpServletRequest request, HttpServletResponse response) {

        System.out.println("@Aspect is running!");
        System.out.println(request.getRequestURI());

        if (request.getAttribute("client") == null) {
            request.setAttribute("client", "test");
            request.getRequestDispatcher("/newpath/contact").forward(request, response);
        }

    }

}
4

1 回答 1

1

您应该考虑@Around建议而不是@Before. 在这种情况下,您可以简单地不执行原始请求链。

于 2012-08-24T16:42:57.190 回答