A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 厦门校区   /  2018-6-15 15:50  /  2762 人查看  /  23 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

吴鹏
总结

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域中,放行
--------------------------------------------------------



回复 使用道具 举报
许剑鸿  webDay23


Filter
过滤器:可以过滤从客户端向服务器发送的请求 可用于IP的过滤,脏话的过滤,自动登录,响应压缩(不知道是啥).......
(客户端的请求至资源之前 先通过过滤器过滤一遍再到达资源)
过滤器使用步骤:1 编写一个类实现Filter接口实现接口的方法 init doFilter destory 2配置过滤器

Filter生命周期:创建:服务器启动的时候(调用init方法)  销毁:服务器关闭(正常关闭调用destory方法)

FilterChain 过滤器链 过滤器链中的过滤器的执行的顺序与<filter-mapping>的配置顺序有关.
         doFilter(request,response); -- 放行,放行到下一个过滤器中,如果没有下一个过滤器,到达目标资源.


使用过滤器完成自动登录的案例
难点(逻辑  Cookie与session的使用 )

了解   通用的字符集编码的过滤器(思想:在request至资源前通过过滤器增强request 并将增强过的request传至资源 资源使用的便是增强过的request.getparameter方法)
                        (通过自建类继承HttpServletRequest的模板类HttpServletRequestWrapper并重写其中getparameter方法完成增强)
回复 使用道具 举报
万冕

filter过滤器,他能过滤浏览器向服务器发送的请求,对请求进行判断,或者ip判断,自动登录

服务器创建的时候filter就创建,服务器关闭的时候filter就摧毁
filter是需要去web里配置的,url就是用来设置需要过滤的路径,/*是全部过滤
<Servlet-name>需要过滤的Servlet的名字</Servlet-name>

*****<dispatcher>配置

request默认过滤request请求
如果设置了forward,就过滤转发,如果还想过滤request,就在写一个<dispatcher>
include:包含
error:错误页面

chain.doFilter(request, response)放行

通用字符集:装饰者模式:

增强的类和被增强类实现相同的接口,增强的类中获得到被增强的类的引用.
就是去重写request.getParameter方法,让他在方法内部直接先将字符转换
回复 使用道具 举报
12
您需要登录后才可以回帖 登录 | 加入黑马