Сначала взгляните на интерфейс HandlerInterceptor
это очень хорошо задокументировано!(HandlerInterceptorAdapter
является только подклассом, который помогает вам, если вы не хотите реализовывать все 3 метода).
Тогда вы заметите, что есть 3 метода, каждый из которых принадлежит одному шагу в цепочке «обработки».
Тогда вы заметите, что использовали неправильный метод: используйте postHandle
вместо preHandle
.
Тогда вы заметите, что карта модели, которую вы создали в своем фильтре ModelAndView mv = new ModelAndView();
не связан с чем-то, и поэтому не может работать!Но, к счастью, postHandle
имеет параметр ModelAndView modelAndView
.И вы должны использовать это вместо создания вашей неподключенной карты модели.
Возможно, позже вы заметите, что создали фильтр дважды.Один раз с помощью сканирования компонентов и один раз с помощью объявления XML.(В этом случае я бы рекомендовал удалить аннотацию @Compnent
)
Таким образом, в конце ваш класс будет выглядеть так:
public class testInterceptor extends HandlerInterceptorAdapter {
@Override
public boolean postHandle(HttpServletRequest request,
HttpServletResponse response,
Object handler,
ModelAndView modelAndView){
modelAndView.addObject("name", "test name");
}
}
В конце вы заметите (я неНа 100% уверен), что этот перехватчик не вызывается для весеннего запроса входа в систему безопасности (j_spring_security_check) или выхода из системы.Потому что это обрабатывается в весеннем фильтре безопасности, который применяется до вызова любого HandlerInterceptor.
(комментарий) Теперь я могу видеть свой комментарий sysout, когда я вызываю свою страницу входа, но он отображаетэто 16 раз, почему это так?
Возможно, потому что вы загружаете некоторые ресурсы (изображения, css, js) через контроллер.