`
gsvince
  • 浏览: 54692 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

Filter编码器

    博客分类:
  • java
阅读更多
〔CharacterEncodingHttpServletRequestWrapper.java〕

package creator.common.filter;

import javax.servlet.http.*;

public class CharacterEncodingHttpServletRequestWrapper extends HttpServletRequestWrapper {

    private String ecoding = null;
    private String oldEncoding = null;

    public CharacterEncodingHttpServletRequestWrapper(HttpServletRequest request,String encoding) {
        super(request);
        this.ecoding = encoding;
        this.oldEncoding = request.getCharacterEncoding();
    }

    public String getParameter(String value) {
        try{
            if((oldEncoding == null || isIOS88591(oldEncoding)) && super.getParameter(value)!=null){
                return new String(super.getParameter(value).getBytes('iso-8859-1'),ecoding);
            }
            else{
                return super.getParameter(value);
            }
         }
        catch(Exception e){
            e.printStackTrace();
            return null;
        }
    }

    private boolean isIOS88591(String endcoding){
        endcoding = endcoding.toLowerCase();
        return endcoding.startsWith('iso')&& (endcoding.indexOf('8859') != -1) && endcoding.endsWith('1');
    }
}


〔CharacterEncodingHttpServletResponseWrapper.java〕

package creator.common.filter;

import javax.servlet.http.*;

public class CharacterEncodingHttpServletResponseWrapper extends HttpServletResponseWrapper {

    private String ecoding = null;

    public CharacterEncodingHttpServletResponseWrapper(HttpServletResponse response,String encoding) {
        super(response);
        this.ecoding = encoding;
    }

    /* (non-Javadoc)
     * @see javax.servlet.ServletResponse#setContentType(java.lang.String)
     */
    public void setContentType(String value) {
        super.setContentType('text/html;charset='+ecoding);
    }

}



〔CharsetEncodingFilter.java〕

package creator.common.filter;

import java.io.IOException;
import javax.servlet.*;
import javax.servlet.http.*;


public class CharsetEncodingFilter implements Filter {
    private FilterConfig config = null;
    private String RequestEncoding = null;
    private String ResponseEncoding = null;

    public void init(FilterConfig arg0) throws ServletException {
        this.config = arg0;
        this.RequestEncoding = config.getInitParameter('RequestEncoding');
        this.ResponseEncoding = config.getInitParameter('ResponseEncoding');
    }

    /* (non-Javadoc)
     * @see javax.servlet.Filter#doFilter(javax.servlet.ServletRequest, javax.servlet.ServletResponse, javax.servlet.FilterChain)
     */
    public void doFilter(ServletRequest req, ServletResponse res, FilterChain fc)
        throws IOException, ServletException {
        if(this.config == null){
            return;
        }
        HttpServletRequest request = (HttpServletRequest)req;
        HttpServletResponse response = (HttpServletResponse)res;

        CharacterEncodingHttpServletRequestWrapper  mrequestw  = new CharacterEncodingHttpServletRequestWrapper(request,ResponseEncoding);
        CharacterEncodingHttpServletResponseWrapper wresponsew = new CharacterEncodingHttpServletResponseWrapper(response,ResponseEncoding);
        fc.doFilter(mrequestw,wresponsew);
    }

    public void destroy() {
    }

}


〔web.xml〕

 
<filter>
    <filter-name>CharsetEncoding</filter-name>
    <filter-class>javabean.com.CharsetEncodingFilter</filter-class>
    <init-param>
      <param-name>RequestEncoding</param-name>
      <param-value>iso-8859-1</param-value>
    </init-param>
    <init-param>
      <param-name>ResponseEncoding</param-name>
      <param-value>gb2312</param-value>
    </init-param>
  </filter>
  <filter-mapping>
    <filter-name>CharsetEncoding</filter-name>
    <url-pattern>/*</url-pattern>
  </filter-mapping>
分享到:
评论

相关推荐

    64位H265编码器

    64位H265编码器,全称为Strongene_Lentoid_HEVC_Encoder_x64_v2.0.2.2_2013_07_24,是针对64位操作系统设计的一款高效视频编码工具。HEVC,全称High Efficiency Video Coding(高效视频编码),是H265的正式名称,是...

    mina框架自定义解编码器

    MINA的编码器和解编码器遵循了Filter设计模式,每个解编码器都是一个过滤器,可以在数据传递过程中进行拦截和处理。 3. **自定义解编码器的实现** 自定义解编码器需要继承MINA提供的AbstractDecoder类或其子类,并...

    JavaEE Filter全局编码过滤器

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

    javaFilter自定义编码过滤器

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

    Adobe Audition3.0扩展编码器 Audition3.0FilterSetup.zip

    压缩包中的"AA3FilterSetup.exe"文件是安装程序,它包含了必要的过滤器和解码器,使得Adobe Audition 3.0能够识别并处理上述提到的非原生格式。安装这个扩展后,用户就可以在Audition中直接导入、编辑和导出这些格式...

    mina自定义编码器-自行做会话累积

    实现这个功能,我们需要创建一个新的编码器类,继承自Mina提供的基础编码器,如`org.apache.mina.filter.codec.ProtocolEncoder`或`org.apache.mina.filter.codec.ProtocolCodecFilter`。 在编码器的实现中,我们...

    java 中如何使用filter过滤器

    在Java Web开发中,Filter(过滤器)是一个强大的工具,它允许开发者在数据处理的前后进行拦截和修改。本文将详细介绍如何在Java中使用Filter过滤器,以及如何配置相关的配置文件,让你一目了然。 ### 1. Filter...

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

    【如何配置Filter过滤器处理JSP中文乱码】 在开发Java Web应用时,尤其是在处理包含中文字符的请求时,可能会遇到中文乱码的问题。解决这个问题的一种常见方法是使用Filter过滤器。以下是配置Filter过滤器处理JSP...

    Filter过滤器的代码及其web.xml配置代码

    在Java Web开发中,Filter(过滤器)是一个非常重要的组件,它允许我们在数据处理之前或之后执行特定的任务,比如防止跨站脚本攻击(XSS)、处理字符编码问题、实现权限控制等。在这个主题中,我们将深入理解Filter的...

    Speex编码Filter源代码

    在这个案例中,"Speex Codec Filter"很可能是实现Speex编码和解码功能的过滤器。 在DirectShow中,Filters通过Filter Graph(过滤器图)连接在一起,形成一个处理链。每个Filter接收来自上游Filter的数据,进行处理...

    hf_mot.zip_motor drive filter_vivado_电机_电机驱动_编码器反馈

    电机驱动及编码器同步采样,内部兼具多重滤波采样处理算法。

    Filter过滤器的概念和使用

    ### Filter过滤器的概念 在Java Web开发中,`Filter`是一种功能强大的机制,它能够拦截客户端请求,并在请求到达目标资源(如Servlet)之前或之后进行处理。这为开发者提供了极大的灵活性来添加诸如编码处理、登录...

    字符编码过滤器

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

    java字符编码监听器

    在Java代码中,我们可以自定义过滤器类继承`javax.servlet.Filter`,然后在`doFilter`方法中设置请求的字符编码。例如: ```java public void doFilter(ServletRequest request, ServletResponse response, ...

    用 Filter 作为控制器的 MVC

    通过实现javax.servlet.Filter接口,我们可以定义过滤规则,比如登录检查、GZIP压缩、字符编码转换等。 在Struts2中,Filter可以作为应用程序的入口点,负责拦截所有请求,并根据配置决定是否转发到Struts2的Action...

    编码过滤器

    在Web开发中,编码过滤器(Encoding Filter)是一种常见的技术,用于处理HTTP请求中的编码问题,确保数据在传输过程中的正确性。标题“编码过滤器”直指这一关键概念,而描述“配置在web.xml中的过滤器,支持过滤GET...

    过滤器Filter的全面解析

    在Java的Web开发中,过滤器(Filter)是不可或缺的一部分,尤其在J2EE环境中,它扮演着重要的角色。过滤器提供了一种机制,可以对HTTP请求和响应进行拦截、处理,甚至修改,从而实现诸如数据校验、权限控制、字符...

    java filter打印请求返回参数

    为了实现在过滤器中获取请求体内容以及响应内容的功能,本方案主要采用了以下技术手段: 1. **对`HttpServletRequest`进行封装**:通过创建`HttpServletRequestWrapper`子类来包装原始请求对象,并重写`getReader()...

    Filter(过滤器)简介和工作原理

    Filter可以用来实现诸如数据校验、字符编码转换、登录检查、缓存控制等功能,极大地增强了Web应用程序的功能性和可维护性。 Filter接口定义在javax.servlet包中,主要包含三个方法: 1. `void init(FilterConfig ...

Global site tag (gtag.js) - Google Analytics