Filter过滤的操作

Filter:过滤器

1. 概念
	* 生活中的过滤器:净水器,空气净化器
	* web中的过滤器:当访问服务器的资源时,过滤器能将请求拦截下来,完成一些特殊操作
	* 过滤器的作用:
		* 一般用于完成通用的操作,如:登录验证,统一编码处理,敏感字符过滤

2. 快速入门:
	1. 步骤
		1. 定义一个类,实现接口Filter
		2. 复写方法
		3. 配置拦截路径
			1. web.xml
			2. 注解

	2. 代码
				import javax.servlet.*;
				import javax.servlet.annotation.WebFilter;
				import java.io.IOException;
				
				@WebFilter("/*")//访问所有资源的时候都会被拦截,执行这个过滤器
				public class FilterDemo implements Filter {
				    public void destroy() {
				    }
				
				    public void doFilter(ServletRequest req, ServletResponse resp, FilterChain chain) throws ServletException, IOException {
				        System.out.println("FilterDemo被执行......");
				        //放行
				        chain.doFilter(req, resp);
				    }
				
				    public void init(FilterConfig config) throws ServletException {
				
				    }
				
				}
	3. 过滤器细节:
		1. web.xml配置
				<filter>
				    <filter-name>FilterDemo</filter-name>
				    <filter-class>com.xt.servlet.filter.FilterDemo</filter-class>
				  </filter>
				  <filter-mapping>
				    <filter-name>FilterDemo</filter-name>
					<!-- 这个路径是拦截路径 -->
				    <url-pattern>/*</url-pattern>
				  </filter-mapping>

		2. 过滤器执行流程
			1. 执行过滤器,request拦截,
			2. 然后执行放行资源
			2. 回来在执行放行代码下面的代码
		3. 过滤器的生命周期方法
			1. init()方法在服务器启动的时候会创建filter对象,然后调用init方法,只执行一次
			2. doFilter()方法在每次请求被拦截资源的时候都会被执行,会执行很多次
			3. destroy()方法在服务器关闭后,filter对象被销毁。如果服务器是正常关闭,则会被执行destroy方法,只执行一次
		4. 过滤器配置详解
			1. 拦截路径配置:
				1. 具体资源路径:/index.jsp 只有访问index.jsp资源时,过滤器才会被执行。
				2. 拦截目录:/user/* 访问/user下的所以资源的时候会被拦截,过滤器会被执行。
				3. 后缀名拦截:*.jsp 访问所有后缀名为jsp资源时,过滤器会被执行
				4. 拦截所以资源:/*  访问所有资源时,过滤器都被执行
			2. 拦截方式配置:资源被访问的方式
				1. 注解配置:
					* 设置dispatcherTypes属性
						1. REQUEST:默认值,浏览器直接请求资源
						2. FORWARD:转发访问资源
						3. INCLUDE:包含访问资源
						4. ERROR:错误跳转资源
						5. ASYNC:异步访问资源
				2. web.xml配置
					* 设置<dispatcher></dispatcher>标签。取值和注解一样。
		5. 过滤器链(配置多个过滤器)
			* 执行顺序:如果有2个过滤器:过滤器1和过滤器2
				1. 过滤器1
				2. 过滤器2
				3. 资源执行
				4. 过滤器2
				5. 过滤器1

			* 过滤器先后顺序问题:
				1. 注解配置:按照类名的字符串比较规则比较,值小的先执行
					* 如:AFilter和BFilter,AFilter就先被执行。
				2. web.xml配置: <filter-mapping>标签,谁定义在上边,谁被先执行。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值