2015-10-01 2 views
0

Я внедряю класс MyInterceptor.java, который распространяется на preHandle(), postHandle() и afterCompletion(). Методы перехватчиков не вызываются.HandlerInterceptor: Перехватчик не называется

Вот MyInterceptor.java

package com.mykong.common.interceptor; 

import javax.servlet.http.HttpServletRequest; 
import javax.servlet.http.HttpServletResponse; 
import org.springframework.web.servlet.HandlerInterceptor; 
import org.springframework.web.servlet.ModelAndView; 

public class MyInterceptor implements HandlerInterceptor { 

    @Override 
    public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) 
      throws Exception { 
     System.out.println("Pre-handle"); 

     return true; 
    } 

    @Override 
    public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, 
      ModelAndView modelAndView) throws Exception { 
     System.out.println("Post-handle"); 
    } 

    @Override 
    public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) 
      throws Exception { 
     System.out.println("After completion handle"); 
    } 

} 

Вот MVC-диспетчерская-servlet.xml

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

    <context:component-scan base-package="com.mkyong.common.controller" /> 

    <mvc:interceptors> 
     <mvc:interceptor> 
      <bean class="com.mykong.common.interceptor.MyInterceptor" /> 
      <mvc:mapping path="/**"/> 
     </mvc:interceptor> 
    </mvc:interceptors> 

    <mvc:annotation-driven /> 

</beans> 

Здесь web.xml

<web-app id="WebApp_ID" version="2.4" 
    xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee 
    http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"> 

    <display-name>Spring Web MVC Application</display-name> 

    <servlet> 
     <servlet-name>mvc-dispatcher</servlet-name> 
     <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> 

     <load-on-startup>1</load-on-startup> 
    </servlet> 

    <servlet-mapping> 

     <servlet-name>mvc-dispatcher</servlet-name> 
     <url-pattern>/*</url-pattern> 
    </servlet-mapping> 

    <context-param> 
     <param-name>contextConfigLocation</param-name> 
     <param-value>/WEB-INF/mvc-dispatcher-servlet.xml</param-value> 
    </context-param> 

    <listener> 
     <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class> 
    </listener> 

</web-app> 

Я бегу этот проект затмение. Я не могу видеть, что «Предварительная обработка», «Пост-дескриптор» и «После завершения дескриптора» печатаются на вкладке «Консоль» eclipse.

Любая помощь будет оценена по достоинству. Спасибо :)

+0

Вы пробовали это после вызова службы? Это срабатывает только при вызове службы –

+0

Да, я вызвал сервис. Он возвращает ответ без каких-либо проблем. Тем не менее, «Pre-handle», «Post-handle» и «После завершения дескриптора» не печатаются на консоли – user15

ответ

0

Изменить отображение mvc-dispatcher сервлета в вашем web.xml следующим образом:

<servlet-mapping> 
     <servlet-name>mvc-dispatcher</servlet-name> 
     <url-pattern>/</url-pattern> 
</servlet-mapping> 

Кроме того, редактировать mvc:interceptors в mvc-dispatcher-servlet.xml файл, как показано ниже:

<mvc:interceptors> 
      <mvc:interceptor> 
       <mvc:mapping path="/**"/> 
       <bean class="com.mykong.common.interceptor.MyInterceptor" />   
      </mvc:interceptor> 
</mvc:interceptors> 

При желании, вы можете удалить ниже записи от web.xml, по умолчанию Весна ищет servletName-servlet.xml внутри вашего WEB-INF папка:

<context-param> 
     <param-name>contextConfigLocation</param-name> 
     <param-value>/WEB-INF/mvc-dispatcher-servlet.xml</param-value> 
</context-param> 

<listener> 
     <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class> 
</listener> 
+0

Спасибо, попробовал это. Но не повезло. – user15

+0

Обновлен ответ! – Arpit

+0

Спасибо Арпит. Я сделал исправления, которые вы предложили, но он все еще не вызывает перехватчик. – user15

Смежные вопросы