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:
步骤
以后写监听器的机会很少…