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

本文围绕Java Web过滤器展开,介绍了其应用场景,如统一处理请求响应、日志审核、数据屏蔽替换与加解密等。还阐述了工作原理、生命周期,涉及实例化、初始化等阶段。此外,讲解了Filter接口、过滤器链、初始化参数配置及获取方法,最后提及过滤器可实现Web应用的预处理和后期处理逻辑。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 一、过滤器应用场景

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

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

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

二、过滤器的工作原理

三、过滤器的生命周期

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

四、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接口没有实现类,编写过滤器必须要实现该接口 类,编写过滤器必须要实现

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值