SpringMVC拦截器拦截不了Controller

本文解决了一个关于Spring MVC中自定义拦截器不起作用的问题,详细介绍了如何正确配置<mvc:annotation-driven/>标签以确保自定义拦截器能够生效。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

问题描述

通过debug模式发现每次执行controller的请求,请求都是先进入controller方法
在这里插入图片描述
然后才进入Interceptor拦截器方法
在这里插入图片描述

问题分析及解决方法

  通过上图分析可知,拦截器实际上拦截的并不是controller请求,而是/favicon.ico请求。由此可知该拦截器拦截不了controller请求。
  通过查阅资料得知是因为<mvc:annotation-driven/>标签有默认的拦截器,它已经注册了一个DefaultAnnotationHandlerMapping ,自己定义的拦截器优先级没有它高,导致不会调用自己定义的拦截器。
  由于我把<mvc:annotation-driven/>标签写在了applicationContext配置文件中,我首先试着在web.xml中把springmvc-config的配置写在applicationContext配置上面,重新部署项目,发现还是拦截不到controller请求,查阅资料发现:
applicationContext.xml是随ContextLoaderListener的加载而执行的,
而springmvc-config.xml是随DispatcherServlet的加载而执行的,
在web.xml中,加载顺序是listener>filter>servlet
所以applicationContext.xml先加载!

  于是,我将<mvc:annotation-driven/>标签写到springmvc-config.xml配置文件中,重新部署项目,问题成功解决。

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值