Spring MVC Interceptor中的无限循环

时间:2014-02-26 03:59:41

标签: spring interceptor

我编写了一个自定义拦截器 PreventScreenInterceptor extends HandlerInterceptorAdapter

preHandle 我正在检查某些条件,并在此基础上,我正在使用重定向

response.sendRedirect("/myapp/user/noaccess");

现在,每当我点击 / myapp / user / noaccess 时,它就会进入无限循环,因为我无法从这个拦截器中走出来。它一次又一次地被召唤。

我的应用程序上下文有:

    <mvc:interceptor>
        <mvc:mapping path="/myapp/user/**"/>
        <bean class="com.mypackage.interceptors.PreventScreenInterceptor" />
    </mvc:interceptor>

2 个答案:

答案 0 :(得分:1)

在发送重定向之前,您必须使用request.getRequestURI()检查被调用的URI是否为“/ myapp / user / noaccess”。

答案 1 :(得分:1)

您必须检查请求是否与您从Interceptor重定向的操作一起出现,否则它会一次又一次地重新调用。

供参考使用此代码 -

@Override
    public boolean preHandle(HttpServletRequest request,

    HttpServletResponse response, Object handler) throws Exception {

        String uri = request.getRequestURI();
        logger.debug("inside interceptor  and uri = "+uri);

        if (!uri.endsWith("/noaccess") ) {
            logger.info("request is coming from other than /myapp/user/noaccess");
            response.sendRedirect("/myapp/user/noaccess");
        }

        return true;
    }