Filter的生命周期
1、Filter的生命周期描述
Filter的创建和销毁是由web服务器负责。Web应用程序启动的时候,Web服务器创建Filter的实例对象,并调用其init方法进行初始化的操作(Filter对象只会创建一次,init方法也只会执行一次)
每次Filter进行拦截的时候,都会执行doFilter的方法 当服务器关闭的时候,或者应用从服务器中移除的时候,服务器会销毁Filter对象
2、FilterConfig对象的概述
(1)FilterConfig对象的作用: 用来获得Filter的相关的配置的对象
(2)FilterConfig对象的API getFilterName() getInitParameter(String name) getInitParameterNames() getServletContext()
3、FilterConfig的演示
五、过滤器的相关配置
1、<url-pattern>的配置 完全路径匹配:以/开始,例如/aaa /aaa/bbb 目录匹配:以/开始,例如/* /aaa/* /aaa/bbb/* 扩展名匹配:不能以/开始,以*开始,例如*.jsp *.do *.action
2、<servlet-name>的配置 专门以Servlet的配置的名称拦截Servlet3、<dispatcher>的配置 默认的情况下,过滤器会拦截请求,如果进行转发(需要拦截这次转发) dispatcher的取值有四个: REQUEST:默认值。默认过滤器拦截的就是请求 FORWARD:转发 INCLUDE:页面包含的时候进行拦截 ERROR:页面出现全局错误页面跳转的时候进行拦截(十一)权限验证过滤器一、案例需求 现在一个网站上需要有登录的功能,在登录成功后,重定向到后台的成功页面(后台的页面有很多)。如果现在没有登录,直接在地址栏上输入后台页面地址 编写一个过滤器,可以对没有登录的用户进行拦截(没有登录,回到登录页面;如果已经登录,放行)
二、案例登录功能1、创建表(MySQL执行如下语句)create database web05 charset utf8;use web05;create table user(id int primary key auto_increment,username varchar(20),password varchar(20))charset utf8;insert into user values (null,'aaa','123');
2、搭建项目的环境
3、代码实现三、权限验证的过滤器实现(十二)通用的字符集编码过滤器的分析一、案例需求 假设网站需要向后台提交中文的数据(有可能是GET,也有可能是POST),中文处理根据不同的请求方式,处理的方式也是不同的需要调用request.getParameter();方法接收数据,但是这时会存在乱码,如果想调用request.getParameter()方法,无论是get还是post请求,提交的中文都没有乱码二、增强一个类的方法
1、通过上面的分析,现在要增强request的getParameter方法,增强的过程要写在过滤器当中
(1)如何增强一个类中的方法? 1)继承 必须要能够控制这个类的构造 2)装饰者被增强的类和增强的类需要实现相同的接口在增强的类中获得被增强的类的引用缺点:接口中的方法过多,会导致要重写很多其他的方法 3)动态代理类需要实现接口