`
阅读更多

1:了解Servlet过滤器的概念

1)Servlet过滤器本身并不生成请求和响应对象,它只提供过滤作用。

2)Servlet过滤器能够在Servlet被调用之前检查Request对象,修改Request HeaderRequest内容;

3)Servlet被调用之后检查Response对象,修改Response HeaderResponse内容。Servlet过滤器负责过滤的Web组件可以是ServletJSPHTML文件。

4)过滤器是请求和响应之间的一种WEB组件,它驻留在服务器端,用来截取客户端与资源之间的请求,并对这些信息进行“过滤”。 

 

 

2:了解Servlet过滤器的工作过程

所有的Servlet过滤器类都必须实现javax.servlet.Filter接口。这个接口含有3个过滤器类必须实现的方法:

init()

doFilter()

destroy()

1)init(FilterConfig  config):这是Servlet过滤器的初始化方法,Servlet容器创建Servlet过滤器实例后将调用这个方法。在这个方法中可以读取web.xml 文件中Servlet过滤器的初始化参数

2)doFilter(ServletRequest request, ServletResponse response,FilterChain chain)

这个方法完成实际的过滤操作。当客户请求访问与过滤器关联的URL时,Servlet容器将先调用过滤器的doFilter方法。FilterChain参数用于访问后续过滤器

3)destroy()Servlet容器在销毁过滤器实例前调用该方法,在这个方法中可以释放Servlet过滤器占用的资源

 

 

3:掌握创建发布Servlet过滤器的方法

1)创建Servlet过滤器类NoteFilter.java

2)配置ServletWeb.xml(必须要配置在Servlet节点前才能起到过滤效果)

3)创建Servlet要过滤的内容(servlet/jsp/html

 

 

4:过滤器的应用:

1)使浏览器不缓存页面的过滤器:

有 个 HTTP 响应头字段都可以禁止浏览器缓存当前页面,它们在 Servlet 中的示例代码如下:

 //设定网页的到期时间,一旦过期则必须到服务器上重新调用

   response.setDateHeader("Expires",-1);

//Cache-Control指定请求和响应遵循的缓存机制   no-cache指示请求或响应消息不能缓存

response.setHeader("Cache-Control","no-cache"); 

//是用于设定禁止浏览器从本地机的缓存中调阅页面内容,设定后一旦离开网页就无法从Cache中再调出 。

response.setHeader("Pragma","no-cache"); 

并不是所有的浏览器都能完全支持上面的三个响应头,因此最好是同时使用上面的三个响应头

2)设置字符编码,以解决中文乱码问题。

对于设置请求编码,应该先判断是否已设置编码,然后在设置编码。

If(request.getCharaterEncoding() == null){

         Request.setCharaterEncoding(utf-8);

}

因为响应编码的默认是iso-8859-1,所以应强制设置编码。

response.setContentType(text/html;charset=utf-8);

response.setCharaterEncoding(utf-8);

编码参数可以放到配置文件中来增强程序的扩张性。

3)用户权限控制:编写一个用于检测用户是否登陆的过滤器,如果用户未登录,则重定向到指定的登录页面(主要是检测session中是否包含登录设置的属性)。

由于在权限控制中,可以设置过滤器对所有的请求过滤,对于登录页面这类不需要进行过滤的页面可以以配置参数的形式传递到过滤器中,来解决对所有请求过滤而无法登录的问题。

4)对敏感词汇,html,请求参数两边的空格进行过滤(使用装饰模式)

Servlet API 中提供了一个 HttpServletRequestWrapper 类来包装原始的 request 对象, HttpServletRequestWrapper 类实现了 HttpServletRequest 接口中的所有方法,这些方法的内部实现都是仅仅调用了一下所包装的的 request 对象的对应方法

相类似 Servlet API 也提供了一个 HttpServletResponseWrapper 类来包装原始的 response 对象。

public class MyHttpRequest extends HttpServletRequestWrapper   {

         public MyHttpRequest(HttpServletRequest request) {

                   super(request);

         }

         @Override

         public String getParameter(String arg0) {

                   String value=this.getRequest().getParameter(arg0);

                   value=value.replaceAll("不雅文字", "XXX");

                   return value;

         }

}

分享到:
评论

相关推荐

    Kalman filter 学习 源代码

    本资料为“Kalman filter 学习源代码”,主要面向正在学习或研究卡尔曼滤波器的人员,提供实践操作和理解的参考。由Kevin Murphy编写的Kalman filter toolbox是一个用Matlab实现的工具箱,它包含了各种类型的卡尔曼...

    Filter学习心得

    ### Filter学习心得 #### 一、Filter概述与作用 Filter(过滤器)是Java Web开发中的一个重要组件,它主要用于拦截用户请求,在请求达到目标资源(如Servlet或JSP页面)之前进行预处理,或者在响应返回客户端之前...

    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 页面相关的请求信息。它提供了多种选择,包括以常规方式调用资源、利用修改后的请求信息...

    filter学习资料

    标题中的"filter学习资料"指的是Java Web开发中的Servlet Filter技术,它是Java Servlet API的一部分,用于在请求被Servlet处理之前或之后进行拦截和处理。Filter的主要功能包括数据过滤、权限控制、日志记录等,它...

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

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

    filter在线学习.rar

    《filter在线学习》资源集合包含了丰富的filter学习材料,旨在帮助我们深入理解和掌握这一重要的技术概念。Filter,中文常称为滤波器,是信号处理、数据处理领域中的核心工具,广泛应用于音频处理、图像处理、通信...

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

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

    FilterPro软件学习

    通过打开这个文件,用户可以回顾或继续之前的滤波器设计工作,或者作为学习FilterPro的实例来参考。 总的来说,FilterPro是滤波器设计领域的一款强大工具,通过它,工程师和研究人员可以高效地完成滤波器设计任务,...

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

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

    卡尔曼滤波算法(KalmanFilter)学习

    卡尔曼滤波算法(Kalman Filter)是一种在线性高斯噪声环境下的最优估计方法,广泛应用于信号处理、控制工程、导航、航空航天、图像处理等多个领域。它的核心思想是结合系统模型和观测数据,通过数学推理来估计系统...

    Duanxx的OpenCV学习:filter2D使用说明

    ### Duanxx的OpenCV学习:filter2D使用说明 #### 概述 在计算机视觉领域,OpenCV(开源计算机视觉库)是一个广泛使用的库,它提供了大量的算法和功能来处理图像和视频数据。其中,`filter2D`函数是一个非常重要的...

    Lucene5学习之Filter过滤器

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

    RF filter.rar_RF CBF filter_rf_Filter_rffilter_射频滤波器_滤波器 参数

    总的来说,“RF filter.rar”是一个综合性的射频滤波器学习资源,包含了多种滤波器类型和设计考虑,适合不同水平的读者学习和参考。通过对这些内容的深入研究,可以提升对射频滤波器设计的理解和实践能力。

    Filter驱动开发笔记_filter_

    在IT行业中,驱动程序开发是操作系统与硬件之间的重要桥梁,其中Filter驱动开发是特定的一种,主要涉及对系统...通过学习和实践,开发者能够创建出满足特定需求的Filter驱动,从而在系统层面实现高效、安全的功能扩展。

    FilterBuilder过滤器

    在IT领域,尤其是在Web开发中,`FilterBuilder`是一个重要的工具,它允许用户...通过学习和应用`FilterBuilder`,开发者可以提升其在Web应用程序中处理数据过滤和查询的能力,为用户提供更高效、更直观的数据操作工具。

    DSHOW媒体播放器及Filter的学习总结

    此外,"DirectShow Filter开发学习总结.doc"文档可能详细介绍了在开发过程中遇到的问题、解决策略以及最佳实践。这包括如何调试Filter Graph,如何处理各种媒体格式,以及如何优化性能等。 总的来说,掌握...

Global site tag (gtag.js) - Google Analytics