为什么prehandle被调用两次
今天我自己尝试写了个拦截器,意外发现这个拦截器执行了两次,查阅很多文章过后却还是没能解决问题。
网上提供的解决方法有:1、排除重复扫描原因,导致拦截器执行多次,2、排除xml重复导入,导致拦截器执行多次。
但是我遇到的情况通过这样观察,很明确。话不多说上代码:
package com.atwu.miao.intercepter;import com.atwu.miao.service.UserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.servlet.handler.HandlerInterceptorAdapter;import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;public class AuthIntercepter extends HandlerInterceptorAdapter {@Autowiredprivate UserService userService;@Overridepublic boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {String name = request.getParameter("name");String password = request.getParameter("password");return userService.hasUser(name,password);}
}
断点调试发现
第一次进入断点时:
这里请求路径被拦截,是正确的。
放行。。。
第二次进入断点时:
这里请求路径居然是小图标,诶!
所以问题的原因在于,拦截器拦截了不该拦截的静态资源请求。
解决
只需要放行这样的请求即可!