Interceptor、Filter、Servlet的区别

原文参照:

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> 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值