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

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

                  <filter>
<filter-name>Filter的别名</filter-name>
<filter-class>Filter的全类名</filter-class>
</filter>
<filter-mapping>
<filter-name>别名</filter-name>
<url-pattern>需要Filter拦截的资源地址</url-pattern>
</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></error-code>

   <location>/4.jsp</location>

   </error-page>

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

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

JavaWeb的过滤器Filter的更多相关文章

  1. Javaweb基础--->过滤器filter(转发)

    一.Filter简介 Filter也称之为过滤器,它是Servlet技术中最激动人心的技术,WEB开发人员通过Filter技术,对web服务器管理的所有web资源:例如Jsp, Servlet, 静态 ...

  2. JavaWeb基础—过滤器Filter

    一.概念 JavaWeb三大组件之一(组件都有一个特性,需要在web.xml中配置) 过滤器:会在一组资源(jsp servlet等)的前面执行,可以让请求得到目标资源,也可以终止请求,不再继续 也就 ...

  3. JavaWeb中过滤器Filter的使用示例

    https://github.com/YouXianMing/Java-Web-Study/tree/master/Servlet-Filter 过滤器示例基于以下流程 测试效果如下 web.xml配 ...

  4. JavaWeb中过滤器Filter的url-pattern设置

    源码 https://github.com/YouXianMing/Java-Web-Study/tree/master/Servlet-Filter-UrlPattern Filter顺序以及url ...

  5. Introduction of Servlet Filter(介绍javaweb组件之一过滤器filter)

    javaweb的三大组件都需要交给web服务器运行,都需要在web.xml文件中配置. ①Servlet:javax.servlet.Servlet通过http协议接受客户端的请求,并作出响应的Jav ...

  6. JavaWeb学习笔记(二十二)—— 过滤器filter

    一.什么是过滤器 过滤器filter是JavaWeb三大组件之一,它与Servlet很相似!不过过滤器是用来拦截请求的,而不是处理请求的.WEB开发人员通过Filter技术,对web服务器管理的所有w ...

  7. ⑧javaWeb之在例子中学习(过滤器Filter)

    前言 本系列 Servlet & JSP 学习系列[传送门]逐渐到了中期了,希望大家喜欢我写的,总结的点点滴滴- 今天我们来讲讲过滤器 你们的支持是我写博客的动力哦. 最近买了两本书,觉得大二 ...

  8. JavaWeb学习篇--Filter过滤器

    Filter过滤器简介 ServletAPI中提供了一个Filter接口,开发web应用时,如果编写的 java 类实现了这个接口,则把这个java类称之为过滤器Filter. WEB服务器每次在调用 ...

  9. JavaWeb学习篇之----Servlet过滤器Filter和监听器

    首先来看一下Servlet的过滤器内容: 一.Servlet过滤器的概念: ************************************************************** ...

随机推荐

  1. 【建项目】eclipse maven建立多模块工程

    在工作的时候,大多时候都是用Maven来管理项目,可是一般我们都知道怎么用maven管理工程,却不知道通过Maven自己来建立多模块工程.于是自己抽时间,在网上找些资料,做了起来. 建立简单的Mave ...

  2. Python isspace()方法--转载

    描述 Python isspace() 方法检测字符串是否只由空格组成. 语法 isspace()方法语法: str.isspace() 参数 无. 返回值 如果字符串中只包含空格,则返回 True, ...

  3. 使用CAS实现无锁的SkipList

    无锁 并发环境下最常用的同步手段是互斥锁和读写锁,例如pthread_mutex和pthread_readwrite_lock,常用的范式为: void ConcurrencyOperation() ...

  4. Qt5.4.1_静态编译

    http://www.cnblogs.com/findumars/p/4852350.html http://godebug.org/index.php/archives/133/ http://ww ...

  5. 基于Oracle的SQL优化(崔华著)-整理笔记-第5章“Oracle里的统计信息”

    第5章“Oracle里的统计信息” 详细介绍了Oracle数据库里与统计信息相关的各个方面的内容,包括 Oracle数据库中各种统计信息的分类.含义.收集和查看方法,以及如何在Oracle数据库里正确 ...

  6. @pathVariable的作用

    //url中的id 可通过@pathVariable绑定到函数的参数中

  7. jquery+html5制作超酷的圆盘时钟表

    自己封装的一个用HTML5+jQuery写的时钟表 代码: ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 ...

  8. iOS多线程GCD详解

    在这之前,一直有个疑问就是:gcd的系统管理多线程的概念,如果你看到gcd管理多线程你肯定也有这样的疑问,就是:并发队列怎么回事,即是队列(先进先出)怎么会并发,本人郁闷了好久,才发现其实cgd管理多 ...

  9. fatal error: openssl/evp.h: 没有那个文件或目录

    在陆佳华<嵌入式系统软硬件协同设计实战指南 第2版>一书的第13章节 编译U-boot时会遇到2个错误.原因很简单,就从一开始的错误提示着手: fatal error: openssl/e ...

  10. Backbone设计思路和关键源码分析

    一. Backbone的江湖地位: backbone作为一个老牌js框架为大规模前端开发提供了新的开发思路:前端MVC模式,这个模式也是前端开发演变过程中的一个重要里程碑,也为MVVM和Redux等开 ...