java_day30_javaWeb三大组件之过滤器Filter

过滤器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:如果目标资源是通过声明式异常处理机制调用时,那么该过滤器将被调用。除此之外,过滤器不会被调用。

猜你喜欢

转载自www.cnblogs.com/memo-song/p/9078212.html