Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/308.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/codeigniter/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Spring 3.1 HandlerInterceptor未被调用_Java_Spring - Fatal编程技术网

Java Spring 3.1 HandlerInterceptor未被调用

Java Spring 3.1 HandlerInterceptor未被调用,java,spring,Java,Spring,我遵循HandlerInterceptors的文档。注意,在新版本的Spring中:“配置的拦截器将应用于使用带注释的控制器方法处理的所有请求” 以下内容位于xml配置文件中: 我有一个带注释的控制器,开头如下: 当我请求执行控制器代码的url时,我的拦截器代码永远不会被调用。谁能解释一下原因吗 截取程序代码为: import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletRespons

我遵循HandlerInterceptors的文档。注意,在新版本的Spring中:“配置的拦截器将应用于使用带注释的控制器方法处理的所有请求”

以下内容位于xml配置文件中:

我有一个带注释的控制器,开头如下:

当我请求执行控制器代码的url时,我的拦截器代码永远不会被调用。谁能解释一下原因吗

截取程序代码为:

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.springframework.web.servlet.handler.HandlerInterceptorAdapter;

public class DomainNameInterceptor extends HandlerInterceptorAdapter {
    public boolean preHandle(HttpServletRequest request,
                           HttpServletResponse response, Object handler) 
         throws Exception {
    System.out.println("Why is this not called?");
    return true;
  }
}
我使用了以下文档:


我搜索了HandlerInterceptor,并遵循了包含链接中文档中给出的示例。

如果您使用
配置了MVC上下文,那么我认为在基于此自定义名称空间定义bean时创建的handlerMapping将覆盖您定义的handlerMapping。注册拦截器的更好方法是使用
子标签定义拦截器,这样它将注册到正确的handlerMapping:

<mvc:annotation-driven>
    <mvc:interceptors>
        <ref bean="interceptor"/>
    </mvc:interceptors>
</mvc:annotation-driven>

Biju的上述答案是正确的,但在spring 3.1中,您必须这样做:

<mvc:interceptors>
   <mvc:interceptor>
     <mvc:mapping path="/pathToIntercept/**" />
     <bean class="com.foo.bar.Interceptor" />
   </mvc:interceptor>
</mvc:interceptors>


能否显示拦截器代码?请不要截图:)你也可以链接你下面的文档。我已经包含了上面的截取代码。有什么想法吗?好主意,我还包括了一个文档链接。你能检查一下注册bean的列表,确认DomainNameInterceptor实际上是由框架创建的吗?这个答案让我找到了正确的方向谢谢!我忘了我在WebMvcConfig类中使用@EnableWebMvc设置了一个类。以下操作最终成功:
@Configuration@EnableWebMvc公共类WebMvcConfig扩展了webmvcconfigureradicater{@Inject private ConnectionRepository ConnectionRepository;@Override public void addInterceptors(interceptor registry){//等效于registry.addInterceptor(new domainnamereceptor());}
在Spring 3.1中不是的子标记,但现在它是自己的根标记。否则答案很好。