Javaweb
第十天学习
Filter过滤器
什么是Filter?
Filter被称作过滤器,其基本功能就是对Servlet容器进行调用的过程进行拦截,从而在Servlet进行响应处理前后实现一些特殊功能。
过滤器的配置信息中包含多个元素,这些元素分别具有不同作用:
(1)<filter>根元素用于注册一个Filter。
(2)<filter-name>子元素用于设置Filter名称。
(3)<filter-class>子元素用于设置Filter类的完整名称。
(4)根元素用于设置一个过滤器所拦截的资源。
(5)<filter-name>子元素必须与<filter>中的<filter-name>子元素相同。
(6)子元素用于匹配用户请求的URL,例如“/MyServlet”,这个URL还可使用通配符“”来表示,例如“.do”适用于所有以“.do”结尾的Servlet路径。
Filter映射
1.使用通配符“”拦截用户的所有请求
filter的元素用于配置过滤器拦载的资源信息,如果想让过滤器兴较所有的请求访问,那么需要使用通配符“”来实现:
filter-name>Filterl</filter-names
filter-class>cn.itcast.chapter08.filter.Myeilter
Filter1
/*
2.拦截不同方式的访问请求
在web.xml文件中,一个元素用于配置一个 Fiter 所负责拦载的资源。元素中有一个特殊的子元素,该元素用于指定过滤器所拦截的资源被Servlet容器调用的方式,元素的值共有4个,具体如下。
1)REQUEST
当用户直接访问页面时,Web容器将会调用过滤器。如果目标资源是通过RequestDispatcher的include()或forward()方法访问的,那么该过滤器将不会被调用。
2) INCLUDE
如果目标资源是通过RequestDispatcher的include()方法访问的,那么该过滤器将被调用。除此之外,该过滤器不会被调用。
3) FORWARD
如果目标资源是通过RequestDispatcher的forward()方法访问的,那么该过滤器将被调用。除此之外,该过滤器不会被调用。
4)ERROR
如果目标资源是通过声明式异常处理机制调用的,那么该过滤器将被调用。除此之外,过滤不会被调用。
运行结果:
Filter链
运行结果:
FilterConfig接口
运行结果: