三个实例带你走进web过滤器Filter API

本文深入探讨了web过滤器的概念及其API,包括init、doFilter和destroy等核心方法。通过日志记录、图片保护和下载计数三个实例,详细展示了过滤器在实际应用中的功能和价值,如资源拦截、请求处理和线程安全问题的解决方案。
摘要由CSDN通过智能技术生成

web过滤器


  过滤器是指拦截请求,并对传给被请求资源的ServletRequest或ServletResponse进行处理的一个对象。


过滤器可用于登录、加密和解密、对话检查、图片转换等待。过滤器可以配置拦截一个或者多个资源


1.Filter API

过滤器必须实现javax.servret.Filter接口,这个接口暴露三个生命周期方法:init,doFilter,destroy


当过滤器启动服务时,Servlet容器就会调用init方法。这个方法指调用一次


void init(FilterConfig filterConfig)

filterConfig可用于获取ServletContext对象,或者获取初始化属性(getInitParameter)


doFilter方法时过滤器核心


void doFilter(ServletRequest request ,ServletResponse response,FilterChain chain)


可以在ServletRequest 中添加属性,或者在ServletResponse添加一个标头

也可以获取HttpServletRequest对象


doFilter方法实现中的最后一行代码应该时调用FilterChain中的doFilter(request,response)方法

表示放行,通常会引发下一个过滤器被调用。


void destroy()

这个方法在过滤器即将终止服务之前,有servlet容器调用


2.过滤器的配置


确定要拦截哪些资源  (urlPatterns  value)

要传给init方法的启动初始值(initParams)  可通过getParameterNames   和getParameter方法来获取

给过滤器七个名字(filterName)


可以通过@webFilter注解 和部署描述符中声明



下面通过三个实例来带你了解神秘的过滤器


实例一:日志过滤器

通过一个过滤器,用于在一个文本文件中记录请求的URI。从日志中 可以推断出一些有价值的信息,例如

应用程序中哪一项资源最受欢迎,获知网站每天哪个时间段的访问量最多

import java.io.File;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.Date;

import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值