Filter:过滤器

Filter :过滤器

1.概念:
*生活中的过滤器:净水器,空气净化器,土匪、

*web中的过滤器:当访问服务器的资源时,过滤器可以将请求拦截下来,完成一些特殊的功能。

*过滤器的作用:
一般用于完成通用的操作。如:登录验证、统-编码处理、 敏感字符过滤… I

2.快速入门:

  • 1.步骤

     1.定义一个类,实现接口Filter
     2.复写方法
     3.配置拦截路径
     	1. web.xml
     	2.注解
    
  • 2.代码

package cn.itcast.web.filter;

import java.io.IOException;

import javax.servlet.*;


@WebFilter("/*");//访问所有资源之前,都会执行该过滤器
public class FilterDemo1 implements Filter {

	public void destroy() {
		// TODO Auto-generated method stub

	}

	public void doFilter(ServletRequest req, ServletResponse rep,
			FilterChain filter) throws IOException, ServletException {
		// TODO Auto-generated method stub
		System.out.println("filterdemo1被执行。。。。。");
		// 放行
		filter.doFilter(req, rep);
	}

	public void init(FilterConfig arg0) throws ServletException {
		// TODO Auto-generated method stub

	}

}

  • 3.过滤器细节

      	1.web.xml配置
    
	<filter>
		<filter-name>FilterDemo1</filter-name>
		<filter-class>cn.itcast.web.filter.FilterDemo1</filter-class>
	</filter>
	<filter-mapping>
		<filter-name>FilterDemo1</filter-name>
		<url-pattern>/*</url-pattern>
	</filter-mapping>
	   2.过滤器执行流程
	   		1.执行过滤器
	   		2.执行放行后的资源
	   		3.回来执行过滤器放行代码下面的代码
	   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.注解配置
	   					1.设置dispatcherTypes属性
	   						1.REQUEST; 默认值,浏览器直接请求自愿
	   						2.FORWARD; 转发访问资源
	   						3.INCLUDE; 包含访问资源
	   						4.ERROR; 错误跳转资源
	   						5.ASYNC; 异步访问资源
	   				2.web.xml配置
	   					设置<dispatcher></dispatcher>标签即可
	   5.过滤器链(配置多个过滤器 
			1.执行顺序:如果有两个过滤器:过滤器1,过滤器2
				1.过滤器1
				2.过滤器2
				3.资源执行
				4.过滤器2.
				5.过滤器1
			2.过滤器先后顺序问题
				1.注解配置:
				    按照类名字符串比较规则,值小的先执行
					如:AFilter  和  BFilter,AFilter  就先执行了
				2.web.xml:
					<filter-mapping>谁先配置,谁先执行

4.案例:

  1.案例1_登录验证
	需求:
		1.访问day17_case案例的资源,验证其是否登录
		2.如果登录了直接放行
		3.如果没有登陆,则跳转到登录页面,提示“你尚未登录,请先登录”

在这里插入图片描述

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值