过滤器filter
一.简介及原理
1.Filter也称之为过滤器,管理web服务器的所有web资源,如jsp,servlet,html,图片等.如实现URL级别的权限访问控制
2.Filter接口中有一个doFilter方法,配置对哪个web资源进行拦截后,WEB服务器每次在调用web资源的service方法之前,都会先调用一下filter的doFilter方法,request请求和response响应都会进入配置的filter,根据filter内的代码决定客户端请求到的服务器的资源,如拦截,动态页面静态化等处理
二.过滤器注册和映射Filter
1.注册
<filter>
<filter-name>FirstFilter</filter-name> //Filter名
<filter-class>com.lanou3g.code0523.FirstFilter</filter-class> //Filter的全限定类名
</filter>
2.映射:通过web.xml注册,也可以通过注解@WebFilter注册
<filter-mapping>元素用于设置一个 Filter 所负责拦截的资源。一个Filter拦截的资源可通过两种方式来指定:Servlet 名称和资源访问的请求路径
<filter-name>子元素用于设置filter的注册名称。该值必须是在<filter>元素中声明过的过滤器的名字
<url-pattern>设置 filter 所拦截的请求路径(过滤器关联的URL样式)
<servlet-name>指定过滤器所拦截的Servlet名称。
<dispatcher>指定过滤器所拦截的资源被 Servlet
容器调用的方式,可以是REQUEST,INCLUDE,FORWARD和ERROR之一,默认REQUEST。用户可以设置多个<dispatcher>
子元素用来指定 Filter 对资源的多种调用方式进行拦截。
<filter-mapping>
<filter-name>testFilter</filter-name> //映射的过滤器名称
<url-pattern>/index.jsp</url-pattern> //拦截的URL
<dispatcher>REQUEST</dispatcher> //拦截request请求及请求重定向
<dispatcher>FORWARD</dispatcher> //拦截请求转发
</filter-mapping>
<dispatcher> 子元素可以设置的值及其意义:
REQUEST:当用户直接访问页面时,Web容器将会调用过滤器。如果目标资源是通过RequestDispatcher的include()或forward()方法访问
时,那么该过滤器就不会被调用。
INCLUDE:拦截请求包含.
FORWARD:拦截请求转发.
ERROR:如果目标资源是通过声明式异常处理机制调用时,那么该过滤器将被调用。除此之外,过滤器不会被调用。