zoukankan      html  css  js  c++  java
  • JavaWeb的过滤器Filter

      Filter的作用是在请求到达web资源(HTML、css、Servlet、Jsp)之前拦截,做一个预处理。

      创建一个类实现Filter接口,在web.xml中对文件进行配置

    1                  <filter>
    2                     <filter-name>Filter的别名</filter-name>
    3                     <filter-class>Filter的全类名</filter-class>
    4                  </filter>
    5                  <filter-mapping>
    6                     <filter-name>别名</filter-name>
    7                     <url-pattern>需要Filter拦截的资源地址</url-pattern>
    8                  </filter-mapping>   

      Filter的生命周期:

        构造器在服务器启动时调用,只调用一次,Filter是单例多线程的。

        init():构造器被调用后调用

        doFilter():每一次拦截请求时都会调用。参数有:ServletRequest request 请求报文,ServletResponse response响应报文,FilterChain chain用于放行请求。

              chain.doFilter(request,response)放行请求。

        destroy方法在项目停止时调用。

      url-pattern设置

        精确匹配:目标资源地址和url-pattern地址一模一样时拦截。如/1.jsp

        路径匹配访问在url-pattern配置路径下的目标资源时拦截,如/jsp/*

        后缀匹配访问资源和url-pattern后缀一样就会拦截。如*.jsp

        拦截Servlet:Filter的url-pattern与Servlet的一致或者在filter-mapping标签下添加一个servlet-name标签。

      多个Filter的执行顺序由filter-mapping的配置顺序决定。

      dispatcher

        Filter默认只会拦截直接向目标资源发送的请求,而像转发之类的请求不会拦截

        可以在在filter-mapping的dispatcher标签中来指定过滤器要拦截的请求类型:

           <dispatcher>REQUEST</dispatcher>

           代表拦截发送到目标资源的直接请求,如果不指定dispatcher默认值就是request

           如果在filter-mapping设置了dispatcher则按照设置的内容来

           <dispatcher>FORWARD</dispatcher>

           FORWARD代表会拦截通过转发访问目标资源的请求。

           <dispatcher>INCLUDE</dispatcher>

           INCLUDE会拦截动态包含的请求。

           <dispatcher>ERROR</dispatcher>

           ERROR是拦截在web.xml中声明的错误页面

        我们可以在web.xml文件进行一个错误页面的映射,通过如下标签:

             <error-page>

             <error-code>404</error-code>

             <location>/4.jsp</location>

             </error-page>

             error-code指的是发生错误的代码

             location 发生错误以后去到的页面  

  • 相关阅读:
    [GUIDE] How to Setup Ubuntu 16.04 LTS Xenial Xerus for Compiling Android ROMs
    设置Ubuntu 16.04 LTS的Unity启动器的位置命令
    sed系列:行或者模式匹配删除特定行
    HDOJ 4923 Room and Moor
    Office365client通过本地方式批量部署(即点即用部署)
    hdu 1867 A + B for you again
    Photoshop经常使用快捷键(2)
    SQL_为表和列加凝视
    从头认识java-17.5 堵塞队列(以生产者消费者模式为例)
    Unity5 怎样做资源管理和增量更新
  • 原文地址:https://www.cnblogs.com/PersistWp/p/7475105.html
Copyright © 2011-2022 走看看