为什么禁止在过滤器返回响应而不对拦截器限制

来源:6-13 写了@Transactional也不能回滚?

街边七号

2020-09-08


如图,也正确的返回了预期结果,过滤器返回响应信息可能会产生的问题是什么呢?

http://img.mukewang.com/szimg/5f565c710879fae810801043.jpg

写回答

1回答

张勤一

2020-09-09

葫芦兄你好:

    如果你对 Spring 的特性很熟悉,或者你看过过滤器和拦截器的介绍,你会发现,说法基本上都是一致的。它们起到切面的效果,对请求和响应进行加工。

    但是,由于过滤器会在拦截器之前执行,如果我们直接在过滤器中返回了响应,那么,拦截器就不会再执行。那么,如果拦截器中配置了日志管理、用户管理相关的机制和策略,无疑,这些直接在过滤器中返回的请求信息就丢失了,那么,在统计上肯定会受到影响。

    所以,我更建议的是不要在过滤器中返回响应,抛出异常可以(但是,你要在外层做捕获),一定不要让请求信息丢失。除非是对于一些攻击性的请求,那么,直接返回也无所谓。

    过滤器和拦截器的目的就是在 service 的前后做一些补充,对于不需要发送到 service 的请求,在拦截器中返回,而不要在过滤器中返回。


    我是勤一,致力于将这门课程的问答区打造为 Java 知识体系知识库,Java 知识体系 BBS!共同建造、维护这门课程,我需要每一个你!

1
2
张勤一
回复
街边七号
1024,感谢葫芦支持!
2020-09-09
共2条回复

Java实操避坑指南 SpringBoot/MySQL/Redis错误详解

掌握业务开发中各种类型的坑,,Java web开发领域通用

466 学习 · 204 问题

查看课程