一、过滤器应用场景

  • 对请求和响应进行统一处理
  • 对请求进行日志记录和审核
  • 对数据进行屏蔽和替换
  • 对数据进行加密和解密

比如:在jsp页面中通过页面编码解决中文乱码问题太繁琐了,就可以使用过滤技术实现对请求数据的过滤,在请求与响应数据之间,添加过滤。

比如:在游戏中,出现脏话,就可以使用过滤器,屏蔽脏话或者防止js代码的攻击等等

二、过滤器的工作原理

javaweb基础之过滤器----Filter

三、过滤器的生命周期

  • 实例化
  • 初始化
  • 执行过滤
  • 销毁

四、Filter接口

void  init(FilterConfig

filterConfig)

Web容器调用该方法实现过滤器的初始化

void  doFilter(ServletRequest

 request, ServletResponse

 response, FilterChain  chain)

客户端请求资源时,Web容器会调用与资源对应的过滤器的doFilter()方法。在该方法中,可以对请求和响应进行处理,实现过滤器的功能

void  destory()

Web容器调用该方法,造成过滤器失效

FilterFilter接口没有实现类,编写过滤器必须要实现该接口 实现类,编写过滤器必须要实现该接口 没有实现类,编写

五、过滤器链

通常客户端对服务器请求之后,服务器调用Servlet之前会执行一组过滤器(多个过滤器),那么这组过滤器就称为一条过滤器链。
每个过滤器实现某个特定的功能,一个过滤器检测多个Servlet。(匹配几个,检测几个)。
一组过滤器中的执行顺序与<filter-mapping>的配置顺序一致。
当第一个Filter的doFilter方法被调用时,web服务器会创建一个代表Filter链的FilterChain对象传递给该方法。在doFilter方法中,开发人员如果调用了FilterChain对象的doFilter方法,则web服务器会检查FilterChain对象中是否还有filter,如果有,则调用第2个filter,如果没有,则调用目标资源

如果为注解的话,是按照类名的字符串顺序进行起作用的

六、过滤器的初始化参数(两种方式)

1、注解

@WebFilter(value="/*",initParams= {@WebInitParam(name = "version", value = "1.0")})

2、在xml文件中配置

 <filter>
    <filter-name>myfilter</filter-name>
    <filter-class>com.web.filter.SecondFilter</filter-class>
    <init-param>
      <param-name>
suffix</param-name>
      <param-value>
html</param-value>
    </init-param>
  </filter>

初始化参数可以配置多个的

七、如何获得初始化参数

public void init(FilterConfig fConfig) throws ServletException {
        suffix = fConfig.getInitParameter("suffix");      
    }

八、过滤器的优点

可以实现 Web 应用程序中的预处理和后期处理逻辑

 

 

lter接口没有实现类,编写过滤器必须要实现该接口 没有实现Filter接口没有实现类,编写过滤器必须要实现该接口 类,编写过滤器必须要实现

相关文章:

  • 2021-09-08
  • 2021-07-01
  • 2022-12-23
  • 2021-05-22
  • 2022-01-02
  • 2021-10-02
  • 2022-01-17
猜你喜欢
  • 2022-12-23
  • 2022-12-23
  • 2022-01-17
  • 2021-11-23
  • 2022-01-21
  • 2022-01-18
相关资源
相似解决方案