`
newUserForTest
  • 浏览: 8828 次
  • 性别: Icon_minigender_1
  • 来自: 珠海
最近访客 更多访客>>
社区版块
存档分类
最新评论

编码过滤器EncodingFilter

    博客分类:
  • j2ee
阅读更多
EncodingFilter.java
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 {

     //Instance Variables
     /**
      * The default character encoding to set for requests that pass through
      * this filter.
      */
     protected String encoding = null;

     /**
      * 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 servletRequest, ServletResponse servletResponse,
                          FilterChain chain) throws IOException,
         ServletException {
    	 HttpServletRequest request =(HttpServletRequest)servletRequest;
    	 HttpServletResponse response = (HttpServletResponse)servletResponse;
    	 
    	 // 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);
             }
         }         
         // Pass control on to the next filter         
         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");
         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);
     }
}


web.xml
<filter>
	<filter-name>encodingfilter</filter-name>
         <!-- filter-class写EncodingFilter的路径 我这里是com.test.util.EncodingFilter -->
	<filter-class>com.test.util.EncodingFilter</filter-class>
	<init-param>
		<param-name>encoding</param-name>
		<param-value>GBK</param-value>		
	</init-param>
	<init-param>
		<param-name>ignore</param-name>
		<param-value>true</param-value>
	</init-param>	
</filter>
<filter-mapping>
	<filter-name>encodingfilter</filter-name>
	<url-pattern>/*</url-pattern>
</filter-mapping>
分享到:
评论

相关推荐

    编码过滤器

    在这个例子中,`com.example.web.EncodingFilter`是自定义的编码过滤器类,`/`表示所有请求都会经过这个过滤器。 编码过滤器的主要任务是对请求和响应进行编码转换,一般会设置为UTF-8,因为它是国际化的标准。在...

    JavaWeb页面过滤器之编码过滤

    上述配置表示名为"EncodingFilter"的过滤器将应用于所有URL路径,确保每个请求都会经过这个编码过滤器。 标签中的"jsp"和"servlet"暗示了这个过滤器同样适用于JSP页面和Servlet。对于JSP,编码过滤器可以确保POST...

    Servlet编码过滤器的实现

    在本教程中,我们将深入探讨如何实现一个Servlet编码过滤器,并理解其工作原理。 首先,让我们了解为什么需要编码过滤器。在Web应用中,用户输入的数据可能包含非ASCII字符,如中文、日文等,这些字符在HTTP请求中...

    javaFilter自定义编码过滤器

    在上面的代码中,我们定义了一个名为 EncodingFilter 的自定义编码过滤器,该过滤器用于防止中文乱码。该过滤器实现了 Filter 接口,并重写了 init()、doFilter() 和 destroy() 方法。 * init() 方法:在 init() ...

    JavaEE Filter全局编码过滤器

    JavaEE Filter全局编码过滤器是Java企业版(JavaEE)中的一个重要组件,它在Web应用程序中扮演着数据处理和预处理的角色。Filter是Java Servlet规范的一部分,允许开发者在请求到达Servlet之前或者响应离开Servlet...

    解决字符编码的过滤器

    ### 解决字符编码的过滤器知识点详解 #### 一、字符编码基础概念 在深入了解如何通过Struts2框架中的Servlet过滤器解决字符编码问题之前,我们先简要回顾一下字符编码的基本概念。字符编码是将计算机内部二进制...

    java个人博客毕业论文

    5.2.2 字符编码过滤器EncodingFilter 30 5.3 系统主要功能模块设计 30 5.3.1 相册模块 30 5.3.2 日志模块 32 5.3.3 视频模块 34 5.3.4 留言板模块 35 6 研究成果与前景展望 35 6.1 研究成果概述 35 6.2 软件测试 36 ...

    【Struts】设置字符编码过滤器,解决乱码问题收藏

    本文将详细讲解如何通过设置字符编码过滤器(`SetCharacterEncodingFilter`)来解决这一问题,同时深入理解字符编码的原理以及在实际应用中的配置方法。 字符编码是计算机处理文本的一种方式,它将字符与数字对应...

    关于EncodingFilter的简单使用

    通常,我们通过实现`javax.servlet.Filter`接口来创建自定义过滤器,但这里我们有一个名为`EncodingFilter.java`的文件,它可能已经包含了预定义的编码过滤器实现。在这个类中,我们可以找到`doFilter`方法,这是...

    过滤器实现get请求乱码问题

    在这个场景下,我们需要创建一个专门的过滤器来解决GET请求的编码问题。 首先,我们需要了解HTTP协议的基本知识。HTTP请求的GET方法是通过URL来传递参数的,这些参数与URL本身一起被编码。默认情况下,浏览器使用...

    中文字符过滤器

    在IT行业中,中文字符过滤器(EncodingFilter)是解决Web应用程序中中文乱码问题的关键工具。乱码问题通常发生在数据的编码与解码过程中,尤其是当客户端与服务器之间通过HTTP传输包含中文字符的数据时。本篇文章将...

    java过滤器

    下面是一个简单的字符编码过滤器实现: ```java public class EncodingFilter implements Filter { private String encoding = null; @Override public void init(FilterConfig filterConfig) throws ...

    过滤器笔记整理

    假设我们需要解决中文乱码问题,可以创建一个编码过滤器: 1. **创建过滤器类**: ```java public class EncodingFilter implements Filter { @Override public void init(FilterConfig filterConfig) throws ...

    Java servlet过滤器配置详解

    首先,`EncodingFilter`是一个常见的过滤器,主要用于解决HTTP请求和响应中的编码问题。在处理中文或其他非ASCII字符时,如果没有正确设置编码,可能会出现乱码。`EncodingFilter`通常会将请求和响应的编码设置为UTF...

    网络编程 过滤器链例子

    - 假设我们有两个过滤器,`LoginFilter`负责检查用户是否已登录,`EncodingFilter`用于设置请求和响应的编码格式。 - `LoginFilter`首先被调用,检查session中是否有登录信息,如果没有,重定向到登录页面;如果已...

    教会你如何在java中建过滤器

    "JAVA 中的过滤器详解" Java 中的过滤器是一种特殊的 Servlet 用法,主要用来完成一些通用的操作。Servlet 过滤器的适用场合包括认证过滤、登录和审核过滤、图像转换过滤、数据压缩过滤、加密过滤、令牌过滤、资源...

    jsp用过滤器解决中文乱码问题的方法.docx

    为了解决这个问题,我们可以使用jsp过滤器来实现编码设置。我今天要分享的就是使用jsp过滤器解决中文乱码问题的方法。 什么是jsp过滤器? jsp过滤器(Filter)是一种特殊的jsp组件,用于对jsp页面的请求和响应进行...

    利用过滤器解决JavaWeb(JSP)的乱码问题

    这个问题的出现通常是由于字符编码不一致导致的,而过滤器(Filter)作为一种强大的工具,可以有效地帮助我们解决这个问题。本文将详细讲解如何利用过滤器来解决JavaWeb中的乱码问题。 首先,我们需要理解JavaWeb中...

    如何配置Filter过滤器处理JSP中文乱码

    首先,声明一个新的过滤器,给它一个唯一的名称,例如`EncodingFilter`,并指定过滤器的实现类,如`com.filters.SetCharacterEncodingFilter`。在这个例子中,`&lt;init-param&gt;`标签用于设置字符编码和忽略大小写的参数...

Global site tag (gtag.js) - Google Analytics