`

过滤器filter学习

阅读更多

 

/////////
开发web应用时,可以开发多个filter,
通过这些filter可以实现对一个或一组WEB资源进行访问拦截,
从而实现一些特殊的功能。
例如实现URL级别的权限访问控制、过滤敏感词汇、压缩响应信息等一些高级功能。

////////
<dispatcher>指定过滤器所拦截的资源被 Servlet 容器调用的方式,
可以是REQUEST,INCLUDE,FORWARD和ERROR之一,默认REQUEST。
用户可以设置多个<dispatcher> 子元素用来指定 Filter 对资源的多种调用方式进行拦截。

<dispatcher> 子元素可以设置的值及其意义:
REQUEST:当用户直接访问页面时,Web容器将会调用过滤器。
 如果目标资源是通过RequestDispatcher的include()或forward()方法访问时,
 那么该过滤器就不会被调用。
 
INCLUDE:如果目标资源是通过RequestDispatcher的include()方法访问时,
 那么该过滤器将被调用。除此之外,该过滤器不会被调用。
 
FORWARD:如果目标资源是通过RequestDispatcher的forward()方法访问时,
 那么该过滤器将被调用,除此之外,该过滤器不会被调用。
 
ERROR:如果目标资源是通过声明式异常处理机制调用时,
 那么该过滤器将被调用。除此之外,过滤器不会被调用

////////
和我们编写的Servlet程序一样,Filter的创建和销毁由WEB服务器负责

///?
 当客户端每次访问filter拦截的资源时,Web容器针对每次访问请求,
 都会调用一次filter对象的doFilter方法。
 doFilter方法是filter接口中最重要的方法,
 应用程序编程人员通常在这个方法内编写代码,体现拦截的目的
 
 //////////
 /////////////
 应用:
 1.统一全站字符编码的过滤器

 2.禁止浏览器缓存所有动态页面的过滤器:
  response.setDateHeader("Expires",-1);
  response.setHeader("Cache-Control","no-cache");?
  response.setHeader("Pragma","no-cache");

 3.控制浏览器缓存页面中的静态资源的过滤器
  这个tomcat服务器已实现了,当这个页面第二次访问时,这些静态资源是不会再
  往浏览器发这些数据,如js,css等静态资源
 
 4.使用Filter实现URL级别的权限认证
   这样可以对不同权限的用户进行过滤,他是否具有访问某些目录的权限
   
 5.实现对request、response对象进行包装
  使用Decorator模式包装request对象,实现html标签转义功能
  使用Decorator模式包装response对象,响应内容的压缩功能
  
  在自定义的response对象中,重写getOutputStream方法和getWriter方法,
  使目标资源调用此方法输出页面内容时,
  获得的是我们自定义的ServletOutputStream对象。
 在我们自定义的ServletOuputStream对象中,重写write方法,
 使写出的数据写出到一个buffer中。(ByteArrayOutputStream)
///////////缓存,压缩
 当页面完成输出后,在filter中就可得到页面写出的数据,
 从而我们可以调用GzipOuputStream对数据进行压缩后再写出给浏览器,
 以此完成响应正文件压缩功能。
 

分享到:
评论

相关推荐

    myAutoLoginWeb.rar JavaWeb-过滤器Filter学习(三)实现用户的自动登录与IP黑名单过滤

    JavaWeb-过滤器Filter学习(三)实现用户的自动登录与IP黑名单过滤JavaWeb-过滤器Filter学习(三)实现用户的自动登录与IP黑名单过滤JavaWeb-过滤器Filter学习(三)实现用户的自动登录与IP黑名单过滤JavaWeb-过滤器Filter...

    JAVA web过滤器Filter学习资料

    JAVA Web 过滤器 Filter 学习资料 JAVA Web 过滤器 Filter 是一种强大且灵活的工具,用于在服务器上过滤与 servlet 或 JSP 页面相关的请求信息。它提供了多种选择,包括以常规方式调用资源、利用修改后的请求信息...

    myFilterDemoWeb.zip JavaWeb-过滤器Filter学习(二)设置全站编码与设置页面缓存

    myFilterDemoWeb.zip JavaWeb-过滤器Filter学习(二)设置全站编码与设置页面缓存

    ffmpeg filter过滤器基础实例以及全面解析

    总之,FFmpeg过滤器的基础实例和全面解析是深入学习FFmpeg音视频处理的关键。通过逐步了解和实践这些过滤器的使用,无论是初学者还是有一定经验的开发者,都可以进一步提升视频处理的能力和效率。FFmpeg过滤器的灵活...

    过滤器(filter) 例子源码

    在Java Web开发中,过滤器(Filter)是一个非常重要的组件,它允许开发者在请求被处理之前或之后执行一些预定义的任务。本篇文章将基于提供的标题和描述,详细讲解过滤器的概念、工作原理以及如何通过源码实现一个...

    bloom filter布隆过滤器学习资料大全

    这个压缩包文件“bloom filter布隆过滤器学习资料大全”显然是一个关于布隆过滤器的资源集合,包含了相关的论文和变种总结,对于学习和理解这一技术非常有帮助。 布隆过滤器的核心思想是通过多个哈希函数将元素映射...

    管道过滤器程序,主要用java实现

    管道过滤器模式是一种设计模式,它在软件工程中被广泛应用于数据处理,特别是在Java编程语言中。...通过对这些代码的深入学习和分析,我们可以更好地理解和应用管道过滤器模式,提高Java编程技能。

    Filter过滤器(分类讨论,分类讲解)

    ### Filter过滤器(分类讨论,分类讲解) #### 一、Filter概述 在Java Web开发中,`Filter`是一种非常重要的技术,它可以在请求到达目标资源(如Servlet或JSP页面)之前进行预处理,或者在响应返回客户端之前进行...

    Struts2编写的通用(拦截器,过滤器)Filter

    项目提供的`程序说明.docx`文档应该包含了如何部署和运行此示例的详细步骤,这对于开发者理解和学习拦截器和过滤器的工作机制非常有帮助。`Demo_Struts2_fileter.war`是一个Web应用的归档文件,可以直接在支持...

    servlet过滤器实例经典过滤器

    Servlet过滤器是Java Web开发中的一个重要组件,它允许开发者在请求到达...在学习和使用过程中,一定要深入理解Filter接口的方法和生命周期,以及如何在web.xml中正确配置过滤器,这样可以更有效地利用这一强大工具。

    Lucene5学习之Filter过滤器

    《深入理解Lucene5:Filter过滤器的奥秘》 在全文搜索引擎的开发过程中,Lucene作为一款强大的开源搜索引擎库,扮演着至关重要的角色。它提供了丰富的功能,使得开发者能够快速构建高效的搜索系统。其中,Filter...

    servlet过滤器技术实例,

    Servlet过滤器是Java Web开发中的一个重要概念,它允许开发者在请求到达Servlet之前或者Servlet...在学习和使用servlet过滤器时,理解其工作原理和生命周期,以及如何在`web.xml`或Spring框架中配置,都是非常关键的。

    Socket通信,封包处理, Filter过滤器处理

    Filter过滤器处理则是在数据传输或处理流程中添加的一层逻辑,用于拦截、修改或者增强数据。 首先,我们来深入理解Socket通信。Socket可以视为网络上的两个程序之间的一个连接点,通过这个连接点,数据可以在它们...

    Java的学习之路,学习JavaEE以及框架时候的一些项目,结合博客和源码,让你受益匪浅,适合Java初学者和刚入门开始学框架者

    [myAutoLoginWeb]过滤器Filter学习-实现用户的自动登录与IP黑名单过滤 [myBookStore]单机版的书店管理系统 [myDbPoolUse]C3P0连接池配置/DBCP连接池配置/Apache的DBUtils框架使用 [myFilterDemoWeb]过滤器Filter...

    Servlet过滤器的简单使用源码+文档

    通过这个简单的登录示例,你可以学习到如何利用Servlet过滤器检查用户登录状态,确保只有已登录的用户才能访问特定的受保护资源。过滤器提供了一种灵活的方式来增强应用程序的功能,无需修改原有的Servlet代码,对于...

    过滤器.zip

    在IT领域,过滤器(Filter)是一个非常关键的概念,尤其在Web开发中,它被广泛应用于数据处理和请求响应的...每个filter_demo可能都对应着不同的应用场景或过滤器特性,逐一学习和比较,能加深对过滤器机制的理解。

    spring boot 拦截器拦截/Filter 过滤session案例

    在本文中,我们将深入探讨如何在Spring Boot应用中使用拦截器(Interceptor)和过滤器(Filter)来处理用户的登录session。这两个组件都是Spring框架的重要部分,它们在处理HTTP请求和响应时发挥着关键作用。 首先...

    java过滤器例子

    通过学习和使用Java过滤器,你可以更高效地管理你的Web应用,提高其安全性和性能。在实际项目中,可以根据需求创建各种自定义过滤器,如缓存控制、GZIP压缩、安全过滤等,以实现更加灵活和强大的功能。

    Springboot配置XSS过滤器XssFilter.zip

    直接可以运行,包含测试类,对HTML和SQL进行过滤,方便扩展。并且可以配置不拦截的路径,包含注释,方便学习。 博客地址:https://blog.csdn.net/u011974797/article/details/121792680

Global site tag (gtag.js) - Google Analytics