中国IT动力,最新最全的IT技术教程
最新100篇 | 推荐100篇 | 专题100篇 | 排行榜 | 搜索 | 在线API文档
首 页 | 程序开发 | 操作系统 | 软件应用 | 图形图象 | 网络应用 | 精文荟萃 | 教育认证 | 硬件维护 | 未整理篇 | 站长教程
ASP JS PHP工程 ASP.NET 网站建设 UML J2EESUN .NET VC VB VFP 网络维护 数据库 DB2 SQL2000 Oracle Mysql
服务器 Win2000 Office C DreamWeaver FireWorks Flash PhotoShop 上网宝典 CorelDraw 协议大全 网络安全 微软认证
硬件维护  CPU  主板  硬盘  内存  显卡  显示器  键盘鼠标  声卡音箱  打印机  机箱电源  BIOS  网卡  C#  Java  Delphi  vs.net2005
  当前位置:> 程序开发 > 编程语言 > Java > 综合文章
JAVA:Filter编码器
作者:未知 时间:2005-07-27 22:28 出处:CSDN 责编:chinaitpower
              摘要:JAVA:Filter编码器

〔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>


关闭本页
 
首页 | 投资与合作 | 服务条款 | 隐私政策 | 收藏本站 | 设为首页 | 新用户注册 | 免责声明 | 使用帮助
Copyright ©2005-2008 chinaitpower.com All rights reserved. www.chinaitpower.com 版权所有