Servlet和Filter的区别

Strust2是基于Filter实现的,而SpringMVC是Servlet的扩展。我很好奇Filter和Servlet究竟有什么区别,查了了该资料,已经能比较清晰的了解Servlet和Filter的区别了。

我想到了一些问题,我之前的一家公司测试方面做的比较细心,需要做防SQL注入、XSS攻击方面的测试,我们的代码没有注意到这些问题,所以需要开发相应的工具来解决这个问题。由于当时我对Spring底层知识了解的并不是太多,我选择了基于反射开发一个工具类,将Request对象传入到这个工具类中,工具类将会判断字段的类型,当字段的类型为String时,则执行SQL、JS代码清理工作。如果现在让我实现这个功能,我想我会选择使用过滤器实现(我当时查的资料基本都是基于过滤器的)。

我们目前的项目中有这样的一个功能:我们在返回Response时,针对图片、文件等OSS里存放的资料,打上一个标记,则会有个Filter计算出该资源的url(携带了签名、鉴权等信息),我去寻找源码时,并没有找到相关的源码,我想这个功能应该是通过某种特别的方式实现的吧,我SpringBoot相关的知识还不够,需要继续学习。

后续:
在和同时的讨论中,我知道了我们代码中处理OSS字段的类:ResponseBodyAdvice。从命名上看,这个应该是切面技术,而并非过滤器技术,我目前没有系统的学习相关的知识,所以保持观望状态。