doFilter过滤器执行两次,求教
不清楚为什么doFilter过滤器会执行两次,求教
以下是我过滤器部分代码
@Override public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
log.info(">>>>>>>>>>>>>>>>>>>> doFilter <<<<<<<<<<<<<<<<<<<<");
HttpServletRequest request = (HttpServletRequest) servletRequest;
HttpServletResponse response = (HttpServletResponse) servletResponse;
//获取 API
String api = request.getRequestURI();
log.info(">>>>> api: {}", api);
//如果配置为白名单路径,则放行
if (!CollectionUtil.isEmpty(WHITE_LiST_API)) {
for (String WHITE_API : WHITE_LiST_API) {
if (api.contains(WHITE_API)) {
log.info(">>>>> 在白名单内");
filterChain.doFilter(servletRequest, servletResponse);
return;
}
}
}
以下是执行结果
回答:
可能是被双重注册,比如同时加了 @WebFilter
和 @Component
,去掉 @Component
就行
也可能是前端发起多次请求(浏览器的话打开网络监听看一下),检查前端代码
回答:
看了一下你的描述,可能有如下情况:
- 重复发起请求了(不过这种情况可能性较低)
- 后续代码进行了转发、重定向操作,这两种都会再次进入过滤器
以上是 doFilter过滤器执行两次,求教 的全部内容, 来源链接: utcz.com/p/944530.html