过滤器

主要功能:

用户权限控制:URL级别权限访问(超级管理员、普通员工)

压缩响应信息:对申请资源的打包压缩,节省流量;

未登录过滤:URL过滤,过滤无效请求;未登录访问拦截;

将编码集的单件套写在过滤器,就不用servlet每个都写了;

过滤敏感词汇,特殊字符,*&等;

使用:三层过滤:1、三件套过滤 2、密码账号验证 3、特殊字符过滤; 考虑过滤顺序;

过滤请求,*.jsp过滤所有jsp;

 

过滤器执行流程:

所有符合过滤器的请求,进来会执行一段代码;

判断是否进入目标资源,进入目标处理业务;

返回过滤器在执行一段代码;

 

过滤器的生命周期:

容器启动的时候,容器读取web.xml 找到过滤器配置创建实例

调用init()方法做初始化; 创建:init(confing)

满足过滤器的请求都经过doFilter方法

关闭容器,销毁Filter; 销毁:关闭服务器的时候销毁。

 

过滤器:

1、首先实现Filter(javax.servlet)接口,WEB开发人员可以通过过滤器对WEB资源进行管理;

过滤器要专门用一个包,【servlet是继承方法】;

2、实现方法:建立-过滤-销毁

形参:请求、响应、FilterChain;FilterChain:进行拦截;请求和响应不是http请求,只能处理普通的请求;

3、去xml中去配置,配置才能在内存实例化,让容器管理他; 映射URL地址,

映射中设置权限过滤条件:

/*所有都要经过过滤

*.jsp 过滤所有jsp文件;

/servlet/* 表示过滤servlet文件夹内的文件。

配置不进行过滤的页面: 登录jsp不拦截,session也不能拦截,验证码不拦截

<init-param>

<param-name>NotFilterList</param-name>

<param-value>/login.jsp,/LoginServlet,/ImageCodeServlet</param-value>

<init-param>

默认过滤Request请求,内部派发不进行过滤;内部包含请求不被过滤(forword,include)

<dispatcher>REQUEST</dispatcher>:过滤用户直接访问的过滤器,WEB调用过滤器;

<dispatcher>FORWORD</dispatcher>:只有通过forword内部派发的才会进入过滤;

<dispatcher>INCLUDE</dispatcher> 过滤包含的请求;

<dispatcher>用于拦截资源被servlet所调用的方式;

在过滤器中增加编码集配置;

4、FilterChain控制请求,filterChain.doFilter(req,resp);

调用doFilter才会达到请求的目标资源;

 

配置多个过滤器:

1、字符集强转器:charcodefilter中实现方法;如何过滤servlet,所有servlet加一个文件夹,配置的时候就过滤这个文件夹; /servlet/* 表示过滤servlet文件夹。

 

过滤器链:web开发中,开发多个过滤器,过滤器组合起来就是过滤器链;

1、多过滤器的执行顺序:按照在xml中配置的顺序有关,先注册先执行,(与过滤条件无关)后注册后进入;

2、第一个过滤器执行过程中,chain.doFilter会在去找当前目标程序还有没有经过其他过滤器。没有就直接进入目标,如果目标还有第二个过滤器,那么就进入第二个过滤器;嵌套执行;

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值