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:

http://static.springsource.org/spring/docs/2.5.x/api/org/springframework/web/servlet/DispatcherServlet.html

"При работе в среде 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, в arviarya конфигурации XML приводит к тому, что объект-перехватчик передает объект-обработчик другому объекту. В нашем методе перехватчика мы имели:

@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 объектом без , но вызывалось с помощью производного от HandlerMethod объекта, когда он присутствовал. Чтобы наш блок if работал, мне понадобился тег в нашем конфигурационном XML.

Другие вопросы по тегам