原文参照:
https://mp.weixin.qq.com/s/cFDmHf59UAvHP9_qswbMFA
https://mp.weixin.qq.com/s/QJuBUKXS-FoFBbf7N84QpA
一、关系图理解
二、过滤器(Filter)
定义:Filter依赖于servlet容器。在实现上,基于函数回调,它可以对几乎所有请求进行过滤,但是缺点是一个过滤器实例只能在容器初始化时调用一次。使用过滤器的目的,是用来做一些过滤操作,获取我们想要获取的数据,比如:在JAVA WEB中,对传入的request、response提前过滤掉一些信息,或者提前设置一些参数,然后再传入Servlet或者Controller进行业务逻辑操作。通常用的场景是:在过滤器中修改字符编码(CharacterEncodingFilter)、在过滤器中修改HttpServletRequest的一些参数(XSSFilter(自定义过滤器)),如:过滤低俗文字、危险字符等。
-
过滤器是在web应用启动的时候初始化一次, 在web应用停止的时候销毁
-
可以对请求的URL进行过滤, 对敏感词过滤
-
挡在拦截器的外层
-
实现的是 javax.servlet.Filter 接口 ,是 Servlet 规范的一部分
-
在请求进入容器后,但在进入servlet之前进行预处理,请求结束是在servlet处理完以后
-
依赖Web容器
-
会多次执行
web.xml文件配置字符编码
<filter>
<filter-name>encodingFilter</filter-name>
<filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
<init-param>
<param-name>encoding</param-name>
<param-value>UTF-8</param-value>
</init-param>
<init-param>
<param-name>forceEncoding</param-name>
<param-value>true</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>encodingFilter</filter-name>
<servlet-name>/*</servlet-name>
</filter-mapping>