Java Spring 3.1 HandlerInterceptor未被调用
我遵循HandlerInterceptors的文档。注意,在新版本的Spring中:“配置的拦截器将应用于使用带注释的控制器方法处理的所有请求” 以下内容位于xml配置文件中: 我有一个带注释的控制器,开头如下: 当我请求执行控制器代码的url时,我的拦截器代码永远不会被调用。谁能解释一下原因吗 截取程序代码为:Java Spring 3.1 HandlerInterceptor未被调用,java,spring,Java,Spring,我遵循HandlerInterceptors的文档。注意,在新版本的Spring中:“配置的拦截器将应用于使用带注释的控制器方法处理的所有请求” 以下内容位于xml配置文件中: 我有一个带注释的控制器,开头如下: 当我请求执行控制器代码的url时,我的拦截器代码永远不会被调用。谁能解释一下原因吗 截取程序代码为: import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletRespons
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中不是的子标记,但现在它是自己的根标记。否则答案很好。