Spring 3.0 MVC обработчик перехватчиков не работает
Я пробую HandlerInterceptors от Spring MVC 3.0.
Ниже мой перехватчик
public class SessionInterceptor extends HandlerInterceptorAdapter {
@Override public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
System.out.println("inside preHandle");
if(request.getSession().getAttribute(SessionConsta nts.USER_SESSION_NAME) == null) {
response.sendRedirect("welcome");
return false;
}
return true;
}
}
Ниже моя конфигурация в моем XML
<mvc:annotation-driven/>
<mvc:interceptors>
<mvc:interceptor>
<mvc:mapping path="/services/*"/>
<bean class="com.ca.myca.interceptors.SessionInterceptor " />
</mvc:interceptor>
</mvc:interceptors>
Но перехватчик не вызывается.
Пожалуйста, дайте мне знать, если я что-то упустил.
4 ответа
В нашем приложении мы используем двойной **
для любого совпадения вспомогательного пути службы, поэтому попробуйте изменить его и проверьте, помогает ли это:
<mvc:mapping path="/services/**"/>
Ты используешь <mvc:annotation-driven/>
с перехватчиком MVC.
Пожалуйста, проверьте на ссылку Spring:
"При работе в среде Java 5+, AnnotationMethodHandlerAdapter по умолчанию также будет зарегистрирован. Объекты HandlerAdapter могут быть добавлены в качестве компонентов в контексте приложения, переопределяя HandlerAdapters по умолчанию. Как и HandlerMappings, HandlerAdapters может быть присвоено любое имя компонента (они тестируются). по типу)
<mvc:annotation-driven/>
предполагается использовать для контроллеров MVC, управляемых аннотациями, таких как @RequestMapping, @Controller и т. д., но я видел, что нет необходимости определять "<mvc:annotation-driven/>
"За поддержку.
Если вы не используете Джексон (для поддержки JSON), вы можете попробовать удалить <mvc:annotation-driven/>
и использовать<context:annotation-config>
вместо этого для общего использования, как автопроводка и т. д.
Попробуйте то, что предлагается в Конфигурации Spring MVC и JSON, используя Джексона.
Поместите вас в перехватчик <mvc:interceptors>
тег
<mvc:interceptors>
<bean class="xx.x..x..x...UserSessionInterceptor" />
</mvc:interceptors>
вы можете сохранить <mvc:annotation-driven/> and <context:annotation-config>
В приведенном выше сообщении arviarya,
@Override
public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView mav) throws Exception {
if (mav != null && handler instanceof HandlerMethod) {
// something we want to have happen
}
Это вызывалось с производным от @Controller объектом без