2016-07-21 129 views
0

我想攔截Spring MVC中的每個請求來執行一些任務。我爲此配置了HandlerInterceptor,但由於某種原因它不起作用。Apache HandlerInterceptor無法正常工作

public class TestInterceptor extends HandlerInterceptorAdapter { 
    @Override 
    public boolean preHandle(HttpServletRequest request, 
      HttpServletResponse response, Object handler) throws Exception { 

     System.out.println("Pre-handle"); 

     return false; 
    } 

} 

爲spring-servlet.xml

<beans xmlns="http://www.springframework.org/schema/beans" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:mvc="http://www.springframework.org/schema/mvc" 
    xsi:schemaLocation="http://www.springframework.org/schema/beans 
    http://www.springframework.org/schema/beans/spring-beans-3.2.xsd 
    http://www.springframework.org/schema/mvc 
    http://www.springframework.org/schema/mvc/spring-mvc-3.2.xsd "> 


    <mvc:interceptors> 
     <bean class="com.abc.controller.TestInterceptor" /> 
    </mvc:interceptors> 

    <bean id="viewResolver" 
     class="org.springframework.web.servlet.view.UrlBasedViewResolver"> 
     <property name="viewClass"> 
      <value> 
       org.springframework.web.servlet.view.tiles3.TilesView 
      </value> 
     </property> 
    </bean> 

    <bean id="tilesConfigurer" 
     class="org.springframework.web.servlet.view.tiles3.TilesConfigurer"> 
     <property name="definitions"> 
      <list> 
       <value>/WEB-INF/tiles.xml</value> 
      </list> 
     </property> 
    </bean> 


</beans> 

我提到這個鏈接來實現這一點: - http://viralpatel.net/blogs/spring-mvc-interceptor-example/

試了幾個辦法,但它不工作。 我是否需要做其他事情,因爲我正在使用瓷磚。

在此先感謝。

回答

0

問題不在於瓷磚,問題在於您的TestInterceptor本身, 在preHandle()中您返回false,應該是true。

根據spring docs,如果執行鏈應該繼續執行下一個攔截器或處理程序本身,preHandle()將返回true。否則,DispatcherServlet假定這個攔截器已經處理了響應本身。

因此,因爲您的preHandle()返回false,您的請求不會繼續進行。

+0

控制甚至沒有采用這種方法。我正在嘗試調試,它不會到達這裏。配置我無法識別的攔截器時出現錯誤。 –