2020-03-30

四、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、的配置

    完全路径匹配:以/开始,例如/aaa  /aaa/bbb

    目录匹配:以/开始,例如/*  /aaa/*  /aaa/bbb/*

    扩展名匹配:不能以/开始,以*开始,例如*.jsp *.do *.action

2、的配置

    专门以Servlet的配置的名称拦截Servlet

3、的配置

    默认的情况下,过滤器会拦截请求,如果进行转发(需要拦截这次转发)

    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)动态代理

类需要实现接口

你可能感兴趣的:(2020-03-30)