JavaWeb过滤器

JavaWeb三大组件

1. 都需要在web.xml中进行配置
Servlet
Listener(2个感知监听器不需要配置)
Filter

2. 过滤器
  它会在一组资源(jsp、servlet、.css、.html等等)的前面执行!
  它可以让请求得到目标资源,也可以不让请求达到!
  * 过滤器有拦截请求的能力!

-------------------------------

过滤器如何编写

1. 写一个类实现Filter接口
2. 在web.xml中进行配置

Filter接口


代码:

public class Afilter implements Filter {

    /**
     * 销毁之前调用
     * 
     * **/
    @Override
    public void destroy() {
    }

    /**
     * 每次执行时调用
     * */
    @Override
    public void doFilter(ServletRequest arg0, ServletResponse arg1,
            FilterChain arg2) throws IOException, ServletException {

    }
     /**
      * 
      * 创建时马上执行,用来初始化
      * */
    @Override
    public void init(FilterConfig arg0) throws ServletException {
    }

}


web.xml

<filter>
  <filter-name>xxx</filter-name>
  <filter-class>cn.itcast.web.filter.AFitler</fitler-class>
</filter>
<fitler-mapping>
  <filter-name>xxx</filter-name>
  <url-pattern>/*</url-pattern>
</filter-mapping>

-------------------------------

FilterConfig-->与ServletConfig相似
  * 获取初始化参数getInitParameter()
  * 获取过滤器名称getFilterName()
  * 获取applictiongetServletContext()

FilterChain
  * doFilter(ServletRequest, ServletResponse):放行!
    放行,就相当于调用了目标Servlet的service()方法!

--------------------------------------------------------------


多过滤器

FilterChain#doFilter()方法:
  执行目标资源,或是执行下一个过滤器!如果没有下一个过滤器那么执行的是目标资源,如果有,那么就执行下一个过滤器!


--------------------------------------------------------------

过滤器的四种拦截方式

  <dispatcher>REQUEST</dispatcher>//请求,默认!<dispatcher>FORWARD</dispatcher>//转发
  <dispatcher>INCLUDE</dispatcher>//包含
  <dispatcher>ERROR</dispatcher>//错误

在<filter-mapping>中进行配置!
--------------------------------------------------------------

多个过滤器的执行顺序

<filter-mapping>的配置顺序决定了过滤器的执行顺序!

posted @ 2017-04-10 15:19  晓梦蝶  阅读(199)  评论(0编辑  收藏  举报