Bootstrap

web实操10——Filter和Listener

Filter介绍

web三大组件:servlet,filter, lisenter。
在这里插入图片描述
在这里插入图片描述

Filter快速入门

步骤

在这里插入图片描述
拦截路径:你访问什么样的资源,过滤器会生效,包括静态资源,动态资源。
配置:两种配置方式

代码实现

代码:
实现Filter接口并实现方法:
在这里插入图片描述
在这里插入图片描述

注解方式配置:

/*:访问所有资源之前都会被过滤器拦下来;
/demo.jsp:只有访问demo.jsp才会被拦截器拦截;
在这里插入图片描述
访问index.jsp时:会被过滤器拦截
在这里插入图片描述
访问页面并没有显示index.jsp…内容,但是过滤器被执行了:
在这里插入图片描述
在这里插入图片描述

执行过滤器后,要考虑是否放行:

这段代码称为放行:
在这里插入图片描述
重启服务器,再访问:
页面有显示:
在这里插入图片描述
过滤器也被执行了:
在这里插入图片描述

web.xml配置方式

在这里插入图片描述
在这里插入图片描述

@WebFilter()注解源码

在这里插入图片描述

urlPatterns默认值空,value也代表了urlPatterns的配置,我们写value=就可以了,如果只有一个值,value可以省略掉。

执行流程

演示代码

在这里插入图片描述
在这里插入图片描述
访问结果:
在这里插入图片描述
在这里插入图片描述

执行流程:

过滤器放行之后,请求资源,资源访问之后,再走过滤器放行下面的代码

过滤器有request对象,req里面放的都是一些请求参数,那么请求参数我们就可以对req进行增强,也可以把请求消息数据拿出来做一些操作后,再进行放行的操作;
放行后执行对应的资源servlet,jsp这些,我们可能会在servlet里面设置resopnse对象,然后回到过滤器里面,就可以继续对resopnse对象进行增强。

生命周期

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

过滤器拦截路径配置

在这里插入图片描述
在这里插入图片描述

过滤器拦截方式配置

资源以哪种方式被访问到:
可以通过浏览器直接发送请求;
服务器内部跳转,转发的方式。

过滤器可以配置拦截的方式是哪种,比如配置拦截只请求资源,只有浏览器直接发送请求资源过滤器才会被执行;如果是转发,过滤器就不会被执行。
在这里插入图片描述
在这里插入图片描述
点进去:
是一个枚举:
在这里插入图片描述

代码演示:
在这里插入图片描述

过滤器链

可以一个项目里配置多个过滤器,而且这些过滤器可以同时生效。
在这里插入图片描述

执行(拦截)顺序

一条路上两个土匪,就一条路,去经过,回来经过顺序。
在这里插入图片描述

代码演示

demo6
在这里插入图片描述
demo7
在这里插入图片描述
访问:
在这里插入图片描述
访问结果:符合预期
在这里插入图片描述

过滤器的先后顺序

每个字符分别比较,a<b,a先执行。
在这里插入图片描述
demo6和demo17,因为前面都一样,到6和1,1值小,所以17先执行

案例一——登陆验证

在这里插入图片描述

代理模式

动态代理

案例二——过滤敏感词汇

在这里插入图片描述
在这里插入图片描述

Listener

在这里插入图片描述
java web中有很多监听器对象,这里只学习ServletContextListener.

ServletContextListener

是一个接口,没有对应的实现类,所以需要我们自己写对应的实现类。

api:

在这里插入图片描述

步骤

以后写监听器的机会很少…
在这里插入图片描述

代码演示

;