Я создал простое приложение WebMVC - с настроенным перехватчиком обработчика. Ответственность перехватчиков проста - он должен проверить, существует ли действующий сеанс в HttpRequest - и если это так, перенаправляйте на страницу регистрации.Spring MVC HandlerInterceptor: Redirect Failed
Проблемы я сталкиваюсь в том, что на редиректе - браузер бросает сообщение:
страница не перенаправив правильно
Firefox определил, что сервер перенаправляет запрос на этого адрес, который никогда не будет завершен.
Код перехватчики выглядит следующим образом:
public class LoginInterceptor extends HandlerInterceptorAdapter{
// to be used checking session management for user.
@Override
public boolean preHandle(HttpServletRequest request,
HttpServletResponse response,
Object handler) throws Exception {
System.out.println(" <interceptor> - this is pre handle");
return true;
}
@Override
public void postHandle(HttpServletRequest request,
HttpServletResponse response, Object handler,
ModelAndView modelAndView) throws Exception {
System.out.println(" <interceptor> - this is post handle");
HttpSession session = request.getSession();
User user = (User) session.getAttribute("user");
System.out.println(" <interceptor> - session id is --> " + session.getId());
System.out.println(" <interceptor> - session create time is --> " + session.getCreationTime());
System.out.println(" <interceptor> - session last accessed time is --> " + session.getLastAccessedTime());
try {
System.out.println(" <interceptor> - user info is --> " + user.toString());
}catch(Exception e){
e.toString();
}
try{
if(session != null){
response.sendRedirect("register");
return;
}
}catch(Exception e){
e.toString();
}
}
public void afterCompletetion(){
System.out.println(" <interceptor> - this is after completion");
}
}
Я попытался добавить полный контекст запроса пути к редиректу - а также корневой контекст - оба не прошедший , Я не вижу, где я терплю неудачу, так что любая помощь очень ценится.
Не уверен, что это просто проблема с C & P ... но проверьте последний метод ... вы его опечалили. Public void afterCompletetion() {должно быть публичным void afterCompletion() {и не забудьте использовать @ Override, вы сами нашли проблему ... – Paolof76
Изменить на 'response.sendRedirect (request.getContextPath() +"/register ");' –