`
tianke66
  • 浏览: 188074 次
  • 性别: Icon_minigender_1
  • 来自: 西安
文章分类
社区版块
存档分类
最新评论

Filter介绍

阅读更多

Filter 并不是一个标准的Servlet ,它不能处理用户请求,也不能对客户端生成响应。
主要用于对HttpServletRequest 进行预处理,也可以对HttpServletResponse 进行后处理,是个典型的处理链。
Filter 有如下几个用处。
·在HttpServletRequest 到达Servlet 之前,拦截客户的HttpServletRequest 。
·根据需要检查HttpServletRequest ,也可以修改HttpServletRequest 头和数据。
·在HttpServletResponse 到达客户端之前,拦截HttpServletResponse 。
·根据需要检查HttpServletResponse ,也可以修改HttpServletResponse 头和数据。
Filter 有如下几个种类。
·用户授权的Filter: Filter 负责检查用户请求,根据请求过滤用户非法请求。
.日志Filter: 详细记录某些特殊的用户请求。
·负责解码的Filter: 包括对非标准编码的请求解码。
.能改变XML内容的XSLTFilter 等。
一个Filter 可负责拦截多个请求或响应:一个请求或响应也可被多个请求拦截。
创建一个Filter 只需两个步骤:
(I)创建Filter 处理类:
(2) 在web.xml 文件中配置Filter 。

创建Filter 必须实现javax.servle t. Filter 接口,在该接口中定义了三个方法。                                                                
void init(FilterConfig config): 用于完成Filter 的初始化。                                                                                 
void destroy(): 用于Filter 销毁前,完成某些资源的回收。                                                                                   
void doFilter(ServletRequest request, ServletResponse response,FilterChain chain): 实现过滤功能,该方法就是对每个请求及响应增加的额外处理。

 

public class SetCharacterEncodingFilter implements Filter ...{

    
// ----------------------------------------------------- Instance Variables
    /** *//**
    * The default character encoding to set for requests that pass through
    * this filter.
    
*/

    
protected String encoding = "GBK";
    
/** *//**
    * The filter configuration object we are associated with. If this value
    * is null, this filter instance is not currently configured.
    
*/

    
protected FilterConfig filterConfig = null;

    
/** *//**
    * Should a character encoding specified by the client be ignored?
    
*/

    
protected boolean ignore = true;


    
// --------------------------------------------------------- Public Methods


    
/** *//**
    * Take this filter out of service.
    
*/

    
public void destroy() ...{

        
this.encoding = null;
        
this.filterConfig = null;

    }



    
/** *//**
    * Select and set (if specified) the character encoding to be used to
    * interpret request parameters for this request.
    *
    * 
@param request The servlet request we are processing
    * 
@param result The servlet response we are creating
    * 
@param chain The filter chain we are processing
    *
    * 
@exception IOException if an input/output error occurs
    * 
@exception ServletException if a servlet error occurs
    
*/

    
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain)
        
throws IOException, ServletException ...{

        
// Conditionally select and set the character encoding to be used
        if (ignore || (request.getCharacterEncoding() == null)) ...{
            String encoding 
= selectEncoding(request);
            
if (encoding != null)
                request.setCharacterEncoding(encoding);
        }

                chain.doFilter(request, response);
            

    }



    
/** *//**
    * Place this filter into service.
    *
    * 
@param filterConfig The filter configuration object
    
*/

    
public void init(FilterConfig filterConfig) throws ServletException ...{

        
this.filterConfig = filterConfig;
        
this.encoding = filterConfig.getInitParameter("encoding");
        
//System.out.println("encodeing=============" + this.encoding);
        String value = filterConfig.getInitParameter("ignore");
        
if (value == null)
            
this.ignore = true;
        
else if (value.equalsIgnoreCase("true"))
            
this.ignore = true;
        
else if (value.equalsIgnoreCase("yes"))
            
this.ignore = true;
        
else
            
this.ignore = false;

    }



    
// ------------------------------------------------------ Protected Methods


    
/** *//**
    * Select an appropriate character encoding to be used, based on the
    * characteristics of the current request and/or filter initialization
    * parameters. If no character encoding should be set, return
    * <code>null</code>.
    * <p>
    * The default implementation unconditionally returns the value configured
    * by the <strong>encoding</strong> initialization parameter for this
    * filter.
    *
    * 
@param request The servlet request we are processing
    
*/

    
protected String selectEncoding(ServletRequest request) ...{

        
return (this.encoding);

    }


}
//EOC


 web.xml

  <filter>
    
<filter-name>Set Character Encoding</filter-name><!--filter名字-->
    
<filter-class>com.infoer.util.SetCharacterEncodingFilter</filter-class><!--filter实现类-->
    
<init-param>
      
<param-name>encoding</param-name>
      
<param-value>GBK</param-value>
    
</init-param>
  
</filter>
<!--拦截设置-->
  
<filter-mapping>
    
<filter-name>Set Character Encoding</filter-name>
    
<url-pattern>*.jsp</url-pattern>
  
</filter-mapping>
  
<filter-mapping>
    
<filter-name>Set Character Encoding</filter-name>
    
<url-pattern>*.do</url-pattern>
  
</filter-mapping>
分享到:
评论

相关推荐

    Vue filter介绍及详细使用

    Vue filter介绍及其使用 VueJs 提供了强大的过滤器API,能够对数据进行各种过滤处理,返回需要的结果。 Vue.js自带了一些默认过滤器例如: capitalize 首字母大写 uppercase 全部大写 lowercase 全部小写 currency ...

    Vue filter介绍及其使用详解

    本文将深入探讨Vue filter的介绍及其使用方法。 ### Vue Filter的基本概念 Vue过滤器主要用于数据的格式化,它们可以被用在插值表达式(mustache语法)或v-model指令中。Vue提供了几个内置的过滤器,包括`...

    CSS.Hacks.and.Filter

    #### 四、CSS Filter介绍 除了**CSS hacks**之外,还有一种被称为**CSS filter**的技术。虽然两者名称相似,但**CSS filter**实际上是指CSS3中的一组视觉效果属性,如模糊、亮度调整等。这些属性可以应用于HTML元素...

    FilterPro使用指南

    设计者可以通过这些工具快速入门,同时用户指南也会介绍如何更改FilterPro桌面中的组件参数,如何进行电容选择和运算放大器选择等。 指南中的部分内容会详细描述由通用有源滤波器UAF42构成的电路,以及如何使用...

    java中filter的用法(过滤器)

    ### Java中的Filter(过滤器)使用详解 ...以上就是关于Java中Filter(过滤器)的一些基本概念和具体实现方式的详细介绍。通过合理的使用Filter,开发者可以轻松地实现许多强大的功能,提高应用程序的安全性和性能。

    NDIS Filter Drivers编写介绍 4pdf

    在给定的PDF文档《NDIS Filter Drivers编写介绍》中,可能会详细介绍这些概念,并通过实例代码演示如何实际编写和实现一个Filter Driver。从文件名来看,这份文档应该分为四个部分,逐步深入讲解NDIS Filter Drivers...

    java filter打印请求返回参数

    本文将详细介绍如何利用Java Filter来打印请求和响应的数据。 #### 二、技术方案概述 为了实现在过滤器中获取请求体内容以及响应内容的功能,本方案主要采用了以下技术手段: 1. **对`HttpServletRequest`进行...

    FilterPro TI滤波器设计 安装包

    下面将详细介绍FilterPro的使用以及在win10 64位系统中的安装步骤。 **一、FilterPro主要功能** 1. **滤波器类型选择**:FilterPro支持多种滤波器结构,如巴特沃兹(Butterworth)、切比雪夫I型和II型、椭圆、...

    NDIS Filter Drivers指南

    #### 一、介绍NDIS Filter Drivers NDIS (Network Driver Interface Specification) Filter Drivers 是一种特殊的网络驱动程序,它们被设计用于在网络驱动程序栈中执行过滤和其他高级服务。这类驱动程序主要负责...

    FilterPro 安装及基本教程中英文

    这些文档详细介绍了软件的各个功能,包括如何创建新设计、编辑滤波器参数、仿真滤波器响应以及查看和打印设计报告。对于英文不熟练的用户,中文教程提供了同样详尽的指导,确保所有用户都能充分利用FilterPro的强大...

    java 中如何使用filter过滤器

    本文将详细介绍如何在Java中使用Filter过滤器,以及如何配置相关的配置文件,让你一目了然。 ### 1. Filter接口与生命周期 Filter是Servlet API中的一个接口,位于`javax.servlet`包下。它定义了三个关键方法: -...

    Filter在MyEclipse中的创建方法

    本文将详细介绍如何在MyEclipse集成开发环境中创建Filter,并通过实际操作来帮助理解其工作原理。 首先,我们需要了解Filter的基本概念。Filter在Servlet规范中定义,是一个实现了javax.servlet.Filter接口的类。它...

    CSS filter属性详解

    MDN filter介绍 filter CSS属性将模糊或颜色偏移等图形效果应用于元素。滤镜通常用于调整图像,背景和边框的渲染。 CSS标准里包含了一些已实现预定义效果的函数。你也可以参考一个SVG滤镜,通过一个URL链接到SVG滤镜...

    Filter知识点整理文档

    ### 一、Filter接口介绍 Filter接口是Java Servlet API的一部分,位于javax.servlet包下。主要包含以下三个方法: 1. `void init(FilterConfig config)`: 过滤器初始化方法,由容器调用,用于设置过滤器的配置信息...

    webfilter的教程

    `[转载]java web开发中的listener和filter`文件可能会介绍`Listener`,它们是另一种类型的Web组件,监听特定的事件,如会话创建或销毁,然后执行相应的操作。 `javax_servlet_Filter`的使用教程可能深入讨论了`...

    filter solutions

    本文将详细介绍该软件的功能、应用以及其在电子设计中的重要性。 一、滤波器设计的基本概念 滤波器设计是根据特定需求构建能够对信号进行频率选择的电路或算法的过程。常见的滤波器类型包括低通、高通、带通和带阻...

    javaWeb项目 filter练习

    下面将详细介绍这两个方面的内容。 **编码过滤** 在Web应用中,数据从客户端传输到服务器时,可能会遇到编码不一致的问题,导致乱码。编码过滤器的主要任务就是确保请求和响应中的字符集统一,通常会设置为UTF-8。...

    delphi资源-Filter中的模糊过滤

    本文将详细介绍在BDE(Borland Database Engine)和ADO(ActiveX Data Objects)环境下如何实现模糊过滤,并针对两种环境的不同特性进行对比分析。 #### 二、BDE与ADO中的模糊过滤 ##### 2.1 BDE环境下的模糊过滤 ...

    java中的filter

    通过上述介绍,我们可以看出`Filter`在Java Web开发中的重要作用,它为我们提供了灵活的请求处理机制,使得我们能够方便地实现诸如安全控制、性能优化等高级功能。在实际项目中,合理利用`Filter`可以极大地提高应用...

Global site tag (gtag.js) - Google Analytics