问题描述:
SpringMvc项目中使用<mvc:interceptors>配置了一系列的拦截器,Web运行时发现第一个拦截器未执行。
问题分析:
1、第一个拦截器未注册上?
InterceptorsBeanDefinitionParser 中打断点,观察有生成对应的拦截器。
2、拦截器未命中?
中间有一次递归调用,发现result来自两个BeanFactory,mvc中配置了四个拦截器,在此处跟踪发现在map中被覆盖,KEY值相同,为org.springframework.web.servlet.handler.MappedInterceptor#0,对应Class为ConversionServiceExposingInterceptor.class;
String org.springframework.beans.factory.support.BeanDefinitionReaderUtils.generateBeanName(BeanDefinition definition, BeanDefinitionRegistry registry, boolean isInnerBean) throws BeanDefinitionStoreException
Generate a bean name for the given bean definition, unique within the given bean factory.
此代码只在一个bean工厂中保证名称唯一。
SpringMVC web.xml同时配置了ContextLoaderListener 和 DispatcherServlet,误将<mvc:interceptors>的配置放到了ContextLoaderListener 下,而DispatcherServlet解析<mvc:annotation-driven />时,默认注册ConversionServiceExposingInterceptor.class,生成了ID为org.springframework.web.servlet.handler.MappedInterceptor#0的拦截器,导致两个容器中的beanName重复,即处理请求时通过Map承载Interceptors的过程中导致第一个拦截器ConversionServiceExposingInterceptor覆盖。
相关推荐
SpringMVC中的拦截器-拦截器方法的作用和执行顺序.avi
本篇文章主要介绍了防止SpringMVC拦截器拦截js等静态资源文件的解决方法,具有一定的参考价值,有兴趣的同学可以了解一下
springmvc 拦截器
自定义拦截器的具体实现、自定义拦截器的配置方式、多个拦截器之间的执行执行顺序
SpringMVC拦截器例子详解,
SpringMvc 拦截器 原理清楚,代码简单,值得学习!
可下载部署直接运行
初学者很容易将 Spring MVC 拦截器 和 Spring Cloud OpenFeign 拦截器搞混,误以为OpenFeign拦截器就是SpringMVC拦截器:Spring MVC拦截器发生在客户端 和 服务端之间,在客户端向服务端发送请求时进行拦截处理。...
SpringMVC拦截器的使用,通俗易懂!
SpringMVC框架下对限定时间拦截(适用于初学者)
SpringMVC拦截器源代码
NULL 博文链接:https://panyongzheng.iteye.com/blog/2084629
springmvc拦截器实现登录验证
企业级开发-SpringMVC使用拦截器实现用户登录权限验证实验报告
Springmvc框架进行登录验证,除了某些特定的action请求不需要登录验证,例如登录,注册等。其他的action请求均需要登录验证,若没有登录则直接调到登录界面。若登录成功,则通过拦截
springmvc-机制(拦截器、aop、异常).pdfspringmvc-机制(拦截器、aop、异常).pdf
springMVC 拦截器源代码 内有详细文档介绍操作 @Override public void postHandle(HttpServletRequest arg0, HttpServletResponse arg1, Object arg2, ModelAndView arg3) throws Exception { //可以通过...
第一个springMVC程序,实现了跳转功能。
初学期间研究的一些东西,随意看看,可以参考,嘿嘿嘿~~springmvc分页拦截器文件上传下载。
SpringMVC - 拦截器