SpringBoot 的 Filter 不慎操作会导致请求结果有两次返回

阅读: 评论:0

SpringBoot 的 Filter 不慎操作会导致请求结果有两次返回

SpringBoot 的 Filter 不慎操作会导致请求结果有两次返回

SpringBoot 的 Filter 不慎操作会导致请求结果有两次返回


问题描述

如题,有时候,我们会遇到使用 Postman 测试在 Spring Boot 的后端 request 一次但是 response 有两次(或者多次)返回结果的情况(即返回的 response 里有两个 json 体)。一种可能导致这种情况的原因便是 Filter 编写的问题。


原因解释

package servletbean;
public class encodefilter implements Filter {public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {CharacterEncoding()==null) {System.out.println(encoding);request.setCharacterEncoding(encoding);}chain.doFilter(request, response);//到下一个链}public void init(FilterConfig fConfig) throws ServletException {fig=fConfig;encoding&#InitParameter("encoding");//获得目标编码格式}
}

上面是一个 Filter 的例子,我们需要注意到的一个点是 chain.doFilter 会将请求转发给过滤器链下一个 Filter,并且这个方法并不会return,所以 doFilter 之后,后续的代码依旧会执行。

如果在 doFilter 后并没有 return,而且你的 Filter 里恰好存在多个 do.Filter,就会导致请求的结果返回多个 json 体。

所以,请务必确保 doFilter 后一定要 return

chain.doFilter(request, response);//到下一个链
return;

参考链接

chain.doFilter(request,response)含义

本文发布于:2024-01-29 03:23:02,感谢您对本站的认可!

本文链接:https://www.4u4v.net/it/170646978312356.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:两次   操作   SpringBoot   Filter
留言与评论(共有 0 条评论)
   
验证码:

Copyright ©2019-2022 Comsenz Inc.Powered by ©

网站地图1 网站地图2 网站地图3 网站地图4 网站地图5 网站地图6 网站地图7 网站地图8 网站地图9 网站地图10 网站地图11 网站地图12 网站地图13 网站地图14 网站地图15 网站地图16 网站地图17 网站地图18 网站地图19 网站地图20 网站地图21 网站地图22/a> 网站地图23