`

web.xml配置详解之filter

阅读更多

一.定义

<filter>
	<filter-name>encodingfilter</filter-name>
	<filter-class>com.my.app.EncodingFilter</filter-class>
	<init-param>
		<param-name>encoding</param-name>
		<param-value>UTF-8</param-value>
	</init-param>
</filter>
<filter-mapping>
	<filter-name>encodingfilter</filter-name>
	<url-pattern>/*</url-pattern>
</filter-mapping>

 

二.作用
        用于指定WEB容器的过滤器,在请求和响应对象在Servlet处理之前和之后,可以通过此过滤器对这两个对象进行处理。

 

三.备注
        filter-class 中指定的过滤器类须继承 javax.servlet.Filter 具有须有以下三种方法
        init(FilterConfig filterConfig):初始化;一般情况下时读取配置文件中的init-param参数值 如 filterConfig.getInitParameter("encoding")
        doFilter(...):用于对request,response进行处理,并能过chain.doFilter(...) 交过下一个控制器
        destroy():资源销毁

 

四.示例:如编码过滤器
        web.xml配置

<filter>
	<filter-name>encodingfilter</filter-name>
	<filter-class>com.my.app.EncodingFilter</filter-class>
	<init-param>
		<param-name>encoding</param-name>
		<param-value>UTF-8</param-value>
	</init-param>
</filter>
<filter-mapping>
	<filter-name>encodingfilter</filter-name>
	<url-pattern>/*</url-pattern>
</filter-mapping>

 

package com.myapp;  
  
import java.io.IOException;  
  
import javax.servlet.Filter;  
import javax.servlet.FilterChain;  
import javax.servlet.FilterConfig;  
import javax.servlet.ServletException;  
import javax.servlet.ServletRequest;  
import javax.servlet.ServletResponse;  
import javax.servlet.http.HttpServletRequest;  
import javax.servlet.http.HttpServletResponse;  
  
/** 
 * 
 */  
public class EncodingFilter implements Filter {  
  
    /** 
     * 配置中默认的字符编码 
     */  
    protected String encoding = null;    
    protected FilterConfig filterConfig;  
    /** 
     * 当没有指定默认编码时是否允许跳过过滤 
     */  
    protected boolean ignore = true;   
    /** 
     *  
     */  
    public EncodingFilter() {  
        // TODO Auto-generated constructor stub   
    }  
  
    /* (non-Javadoc) 
     * @see javax.servlet.Filter#destroy() 
     */  
    public void destroy() {  
        // TODO Auto-generated method stub   
        this.encoding=null;  
        this.filterConfig=null;  
    }  
      
    /* (non-Javadoc) 
     * @see javax.servlet.Filter#doFilter(javax.servlet.ServletRequest, javax.servlet.ServletResponse, javax.servlet.FilterChain) 
     */  
    public void doFilter(ServletRequest request, ServletResponse response,  
            FilterChain chain) throws IOException, ServletException {  
        // TODO Auto-generated method stub   
        HttpServletRequest hRequest=(HttpServletRequest)request;  
        HttpServletResponse hResponse=(HttpServletResponse)response;  
        //Conditionally select and set the character encoding to be used     
        if(ignore || hRequest.getCharacterEncoding()==null){  
            String coding=selectEncoding(hRequest);  
            if(coding!=null){  
                hRequest.setCharacterEncoding(coding);  
                hResponse.setCharacterEncoding(coding);  
            }  
        }  
        //将控制器传向下一个filter   
        chain.doFilter(hRequest, hResponse);  
  
    }  
  
    /* (non-Javadoc) 
     * @see javax.servlet.Filter#init(javax.servlet.FilterConfig) 
     */  
    public void init(FilterConfig filterConfig) throws ServletException {  
        // TODO Auto-generated method stub   
        this.filterConfig=filterConfig;  
        this.encoding=filterConfig.getInitParameter("encoding");  
        System.out.println(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 String selectEncoding(ServletRequest request) {  
        return (this.encoding);  
    }
}

        init方法是在WEB应用启动就会调用,doFilter则是在访问filter-mapping映射到的url时会调用。

 

文章来源:http://blog.csdn.net/liaoxiaohua1981/article/details/6761053

分享到:
评论

相关推荐

    web.xml 配置详解

    web.xml 配置详解,需要的下载了。。。Web.xml常用元素和在java web规范中说明.按照listner,filter,servlet的顺序初始化

    Tomcat中用web.xml控制Web应用详解

    Tomcat 中 web.xml 文件是 Web 应用的核心配置文件,负责管理 Web 应用的生命周期、Servlet 的加载顺序、Filter 的配置等。下面对 web.xml 文件中的重要元素进行详细解释。 context-param 元素 context-param 元素...

    java学习-web.xml配置详解实用.pdf

    "java学习-web.xml配置详解实用.pdf" 本文档主要介绍了Java Web应用程序中web.xml配置文件的详细解释。web.xml文件是Java Web应用程序的核心配置文件,用于定义Web应用程序的各种配置信息。 1. `&lt;context-param&gt;`...

    web.xml详细说明

    用于 web.xml 配置详解。例如: &lt;web-app&gt; &lt;display-name&gt;&lt;/display-name&gt;定义了WEB应用的名字 &lt;description&gt;&lt;/description&gt; 声明WEB应用的描述信息 &lt;context-param&gt;&lt;/context-param&gt; context-param元素声明应用...

    web.xml中标签详解

    web.xml 中标签详解 web.xml 是一个配置文件,用于描述基于 Java Servlet 的 Web 应用程序的结构和组织方式。它是基于 XML 的配置文件,用于存储 Web 应用程序的配置信息。web.xml 文件中包含了一些基本的元素,...

    Web.xml配置文件[文].pdf

    "Web.xml配置文件详解" Web.xml配置文件是Java Web应用程序的核心配置文件之一,它用于定义Web应用程序的各种配置信息和参数。本文将对Web.xml配置文件的各个元素进行详细的解释和分析。 1. `&lt;web-app&gt;`元素 `&lt;web...

    JAVA WEB 开发详解:XML+XSLT+SERVLET+JSP 深入剖析与实例应用.part3

    本书共分4部分,从xml、servlet、jsp和应用的角度向读者展示了java web开发中各种技术的应用,循序渐进地引导读者快速掌握java web开发。.  本书内容全面,涵盖了从事java web开发所应掌握的所有知识。在知识的讲解...

    Web配置详解

    jsp的web.xml配置说明 Web.xml常用元素&lt;web-app&gt;&lt;display-name&gt;&lt;/display-name&gt;定义了WEB应用的名字&lt;description&gt;&lt;/description&gt; 声明WEB应用的描述信息&lt;context-param&gt;&lt;/context-param&gt; context-param元素声明应用...

    webxml文件详解[借鉴].pdf

    Web.xml 文件详解 Web.xml 文件是 Java Web 应用程序的部署描述符文件,用于描述 Web 应用程序的结构和配置。该文件必须以 XML 头开始,声明使用的 XML 版本和字符编码。 DOCTYPE 声明必须立即出现在 XML 头之后,...

    JAVA WEB 开发详解:XML+XSLT+SERVLET+JSP 深入剖析与实例应用.part2

    本书共分4部分,从xml、servlet、jsp和应用的角度向读者展示了java web开发中各种技术的应用,循序渐进地引导读者快速掌握java web开发。.  本书内容全面,涵盖了从事java web开发所应掌握的所有知识。在知识的讲解...

    JAVA WEB 开发详解:XML+XSLT+SERVLET+JSP 深入剖析与实例应用.part4

    本书共分4部分,从xml、servlet、jsp和应用的角度向读者展示了java web开发中各种技术的应用,循序渐进地引导读者快速掌握java web开发。.  本书内容全面,涵盖了从事java web开发所应掌握的所有知识。在知识的讲解...

    JAVA WEB 开发详解:XML+XSLT+SERVLET+JSP 深入剖析与实例应用.part5

    本书共分4部分,从xml、servlet、jsp和应用的角度向读者展示了java web开发中各种技术的应用,循序渐进地引导读者快速掌握java web开发。.  本书内容全面,涵盖了从事java web开发所应掌握的所有知识。在知识的讲解...

    hadoop配置文件参数详解1

    Hadoop 配置文件参数详解 Hadoop 配置文件是 Hadoop 集群的核心组件之一,它们控制着 Hadoop 集群的行为和性能。Hadoop 配置文件主要包括 core-site.xml、hdfs-site.xml 和 mapred-site.xml 三个配置文件。这些配置...

    webx3框架指南PDF教程附学习Demo

    2.2.1. XML Schema中的秘密 ................................................................. 16 2.2.2. 扩展点,Configuration Point ....................................................... 17 2.2.3. ...

    JavaWeb Servlet中Filter过滤器的详解

    JavaWeb Servlet中Filter过滤器的详解 1.简述  Filter过滤器,对web服务器所有web资源进行过滤,从而实现一些特殊的功能(权限访问控制、过滤敏感词汇、压缩响应信息)。...启动服务器,读取配置文件web.xml,

    java web 开发详解

    Java 的 Web框架虽然各不相同,但基本也都是遵循特定的路数的:使用Servlet或者Filter拦截请求,使用MVC的思想设计架构,使用约定,XML或 Annotation实现配置,运用Java面向对象的特点,面向抽象实现请求和响应的...

    Spring注解详解

    Spring注解详解 Spring框架中,注解(Annotation)是一种元数据,能够提供更多关于程序元素的信息,从而简化配置和编程。Spring从2.5版本开始支持注解,通过使用注解,可以使得Bean的配置更加简洁和灵活。 注册...

    jpivot学习总结.doc

    最后你还需要对比 jpivot.war 里的 web.xml 文件去修改你自己的 web.xml 文件。 2. 例子说明 一个Schema的xml文件,定义立方体;(feeSchema.xml) 一个jsp文件(fee.jsp),使用jpivot的标签(jp:mondrianQuery),...

    Log4net详细说明使用

    &lt;filter type="log4net.Filter.LevelRangeFilter"&gt; &lt;/filter&gt; &lt;appender name="ConsoleAppender" type="log4net.Appender.ConsoleAppender" &gt; &lt;layout type="log4net.Layout.PatternLayout"&gt; [%t] %-5...

    Java Web程序设计教程

    5.3.3struts.xml的配置 94 5.4值栈与ognl表达式 100 5.5struts2的标签库 103 5.5.1控制标签 103 5.5.2数据标签 104 5.5.3表单标签 105 5.5.4非表单ui标签 107 本章小结 108 课后练习 109 第6章struts2高级...

Global site tag (gtag.js) - Google Analytics