细说 过滤篇

一、为什么会有过滤器技术?

我们在处理乱码的时候,几乎每个页面都要写相同的代码,是不是太繁琐?

在网页上执行某些操作时,必须判断是用户是否登录,是否拥有权限?

............

为了处理上面的这些问题,就产生了过滤器这个技术。

二、过滤器的执行流程是怎么样子的呢?

  1. 用户访问服务器
  2. 过滤器的发挥作用:对Servlet请求进行拦截
  3. 先进入过滤器,过滤器执行。
  4. 过滤器处理完毕后,再放行,此时,请求到达Servlet/JSP
  5. Servlet处理
  6. Servlet处理完后,再回到过滤器,最后,再由tomcat服务器响应用户。

三、如何来写过滤器

开发步骤

  1. 写一个普通的Java类,实现Filter接口
  2. 配置过滤器
    <!-- 过滤器配置 -->
        <filter>
            <!-- 配置初始化参数 -->
            <init-param>
                <param-name>encoding</param-name>
                <param-value>UTF-8</param-value>
            </init-param>
            <init-param>
                <param-name>path</param-name>
                <param-value>c:/...</param-value>
            </init-param>
        
            <!-- 内部名称 -->
            <filter-name>hello_filter</filter-name>
            <!-- 过滤器类的全名 -->
            <filter-class>cn.itcast.a_filter_hello.HelloFilter</filter-class>
        </filter>
        <filter-mapping>
            <!-- filter内部名称 -->
            <filter-name>hello_filter</filter-name>
            <!-- 拦截所有资源 -->
            <url-pattern>/*</url-pattern>
        </filter-mapping>

     

相关API

|-- interface  Filter                过滤器核心接口
Void  init(filterConfig);    初始化方法,在服务器启动时候执行
Void  doFilter(request,response,filterChain);   过滤器拦截的业务处理方法
Void destroy();               销毁过滤器实例时候调用

|-- interface  FilterConfig   获取初始化参数信息
    
String    getInitParameter(java.lang.String name) 
Enumeration    getInitParameterNames() 

|-- interface  FilterChain     过滤器链参数;一个个过滤器形成一个执行链;
    void doFilter(ServletRequest request, ServletResponse response)  ;  执行下一个过滤器或放行

 

你可能感兴趣的:(细说 过滤篇)