吴鹏
总结
Filter:
可以过滤从客户端向服务器发送的请求
过滤器的使用:进行IP的过滤,脏话过滤,自动登陆,响应压缩...
使用过滤器:
编写一个类,实现Filter;
chain.doFilter(request,response);放行
配置过滤器:
mapping中的url写上要使用过滤器的文件的路径,如果要全部都使用过滤器就使用通配符
filter-class写上使用的过滤器的全类名;
过滤器的生命周期:
创建:启动服务器的时候;
执行:发送请求的时候;
销毁:服务器关闭的时候;
FilterConfig:过滤器的配置对象;
String getFilterName();获得当前Filter的名称
获得初始化参数:在web.xml配置后
通过getInitParameter("初始化参数名");获得初始化参数;
获得所有的初始化参数:
getInitParameterNames();获得的是一个枚举,需遍历;
------------------------------------------------------
配置文件中关于多个Filter针对同个文件的拦截的执行顺序,
是根据配置文件中Filter的从上往下的书写顺序来执行的,
哪一个的顺序在前,就先执行哪一个Filter;
-----------------------------------------------------
FilterChain过滤器链:
过滤器链中的过滤器的执行顺需和过滤器在web.xml中的顺序有关,
谁在前谁就先执行,执行后如果放行,就找下一个过滤器,
执行完成后,响应的时候依然经过过滤器,从chain.doFilter(request,response)的下一句
开始继续执行;
Filter相关配置:
<url-pattern>的配置:
1 完全路径匹配 :以/开始
2 目录匹配 :以/开始,以*结束; /demo2/*
扩展名匹配 :不能以/开始,以*开始; *.do
<servlet-name>的配置:
可以根据servlet的名称拦截Servlet;
<dispacther>
REQUEST :默认值
FORWARD:转发
INCLUDE:包含
ERROR:错误页面跳转(全局错误页面)
当拦截的页面有一个请求转发时,是无法拦截转发的页面,可以设置<dispacther>;
----------------------------------------------------------
自动登陆中Filter中处理session的步骤:
判断session是否为空
不为空,放行
为空,判断cookie是否为空
为空,放行
不为空,获取cookie的值
判断cookie的值是否有用户名和密码
没有,放行
有,调用业务层,查询此用户名和密码是否在数据库中有存在对应的用户对象
不存在,放行
存在,将此对象存放到session域中,放行
--------------------------------------------------------
|