我编写了一个自定义拦截器 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>
答案 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;
}