`
zhangshixi
  • 浏览: 674961 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

编码过滤器

阅读更多

在Web应用开发中,我们常常需要对http请求做相应的编码处理,这时,可通过过滤器的方式来实现:

package com.zhangsx.filter;

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;

/**
 * 编码过滤器。
 * 如果在初始化参数中配置了encode,那么将所有的过滤的请求和响应均设置为指定的编码;
 * 否则,直接放行,不做任何处理。
 * 
 * @author Zhangshixi
 */
public class EncodeFilter implements Filter {

    private FilterConfig config;
    // 初始化配置参数
    private static final String INIT_PARAM_ENCODE = "encode";

    /**
     * 初始化方法。
     * @param config
     * @throws javax.servlet.ServletException
     */
    @Override
    public void init(FilterConfig config) throws ServletException {
        this.config = config;
    }

    /**
     * 如果设置了初始化参数encode,那么将所有过滤的请求和响应均设置为指定的编码;
     * 否则,直接放行,不做任何处理。
     * @param request 请求
     * @param response 响应
     * @param chain 过滤器链
     * @throws java.io.IOException IO异常
     * @throws javax.servlet.ServletException Servlet异常
     */
    @Override
    public void doFilter(ServletRequest request, ServletResponse response,
            FilterChain chain) throws IOException, ServletException {
        String encode = config.getInitParameter(INIT_PARAM_ENCODE);

        if (encode != null && !encode.isEmpty()) {
            request.setCharacterEncoding(encode);
        }

        chain.doFilter(request, response);

        if (encode != null && !encode.isEmpty()) {
            response.setCharacterEncoding(encode);
        }
    }

    @Override
    public void destroy() {
    }
}

 

同时,在web.xml中配置所要过滤的请求即可。如:

<filter>
    <description>编码过滤器</description>
    <filter-name>EncodeFilter</filter-name>
    <filter-class>com.zhangsx.filter.EncodeFilter</filter-class>
    <init-param>
        <description>编码方式</description>
        <param-name>encode</param-name>
        <param-value>utf-8</param-value>
    </init-param>
</filter>
<filter-mapping>
    <filter-name>EncodeFilter</filter-name>
    <url-pattern>/*</url-pattern>
</filter-mapping>
 

 

分享到:
评论

相关推荐

    字符编码过滤器

    在Java Web开发中,字符编码过滤器(Character Encoding Filter)起着至关重要的作用。它确保了请求和响应数据在处理过程中使用一致的字符编码,从而避免乱码问题。本篇文章将详细探讨Java过滤器(Filter)的概念,...

    Servlet编码过滤器的实现

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

    JavaEE Filter全局编码过滤器

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

    字符编码过滤器 字符编码转换 post字符转换

    本文将深入探讨"字符编码过滤器"、"J2EE字符编码"、"字符编码转换"以及"POST字符转换"这些关键知识点,并结合提供的文件"encoding-filter.jar"和"使用方法.txt"来解释它们的应用。 首先,字符编码是计算机存储和...

    JavaWeb页面过滤器之编码过滤

    在给定的标题“JavaWeb页面过滤器之编码过滤”和描述中,我们可以深入探讨JavaWeb中的编码过滤器,以及如何在MyEclipse 8.5环境下开发和应用这样的过滤器。这个过滤器不仅适用于JSP页面,也适用于Servlet和HTML等Web...

    javaFilter自定义编码过滤器

    JavaFilter自定义编码过滤器知识点 一、Filter接口和 FilterChain接口 在 Java 中, Filter 接口和 FilterChain 接口是 Servlet 规范中的两个重要组件。 Filter 接口用于定义一个过滤器, FilterChain 接口用于将...

    javaweb全站请求编码过滤器

    在Java Web开发中,"全站请求编码过滤器"是一个至关重要的组件,它确保了所有来自客户端的请求数据(如表单提交、URL参数等)能够正确地被解码为服务器端可理解的格式,避免因为字符编码问题导致的数据乱码。...

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

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

    编码过滤器的设置

    javaweb 中过滤器的设置 包括配置文件和servlet的设置

    java字符编码监听器

    在实际项目中,我们可能需要编写一些测试用例来验证字符编码过滤器的效果,比如包含特殊字符的表单提交,或者不同编码的URL请求等。 6. **最佳实践** - 为确保整个应用的一致性,建议在所有的HTTP响应中都明确指定...

    JAVA-编码过滤器

    编码过滤器 可以下载看一下 如有不足的地方 请提出来

    Xvid 编码过滤器-Directshow

    环境:XP + VC6 + DirectShow 这是本人写的一个Xvid编码过滤器,支持对YV12、RGB24、RGB32的编码,支持外部接口调用SetFrameRate、SetEncodeQuant分别设置编码时的帧率、编码质量

    Java编码过滤器

    Java编码过滤器。 public class SetCharacterEncodingFilter implements Filter

    通过原理解析Spring mvc的内置编码过滤器

    "Spring MVC内置编码过滤器详解" Spring MVC框架中,如何解决从页面传来的字符串的编码问题?答案是使用CharacterEncodingFilter过滤器,该过滤器是Spring MVC内部提供的,主要用于设置请求响应的字符编码。 ...

    过滤器笔记整理

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

    jsp 过滤器中文乱码的处理

    在这个过滤器中,我们首先将请求转换为`HttpServletRequest`对象,然后调用`setCharacterEncoding()`方法设定字符编码为目标编码(如GBK或UTF-8),最后将请求传递给下一个过滤器或目标Servlet。 为了使过滤器生效...

    java过滤器

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

Global site tag (gtag.js) - Google Analytics