赛迪网 > IT技术 Java > Java-企业应用
  IT资讯搜索
 
IT产品搜索
[程序开发][网管世界][网络安全][数据库技术]
[操作系统][嘉宾聊天·在线访谈][活动集锦]
[精彩专题][Symantec专区][订阅IT技术周刊]
[开发论坛][网管论坛][安全论坛][数据库论坛]
[操作系统论坛][Sybase专区][IBM dW技术专区]
[病毒求助][病毒与漏洞播报][文档·源码下载]

JAVA:Filter编码器

发布时间:2006.04.29 01:24     来源:月光软件站    作者:

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




[ 发表评论 ] 字体[  ] [ 打印 ] [ 进入博客 ] [ 进入论坛 ]  [ 推荐给朋友 ]
  相关文章
· JAVA:MD5加密器 (02-09) · tomcat配置手册(server.xml) (02-04)
· google里搜索电子书的一个好办法 (03-19) · J2EE兼容性(CTS)测试1.4测得可真细呀 (06-20)
· 为什么我的图片显示不出来,是个筐,请高手帮 (12-23) · JAVA:配置文件读取器 (06-01)
· JAVA:ServletContext应用 (06-26) · Axis 1.2 RC3 在 tomcat 5.5.8下的配置。 (04-26)
· IBM WAS 5.X 忘记密码的处理 (12-09) · Tomcat的class加载的优先顺序一览。 (02-24)
  客户需求反馈表
* 姓  名:
更多资料  了解方案  认识厂商
* 单位名称:
* 联系电话:
* 电子邮件:
  赛迪推荐  
  手机·资费 ·新品·导购·评测·手机资费·宽带
手机搜索  诺基亚 N73 MOTO Z6
  IT产品 ·笔记本·台式机·服务器·打印·投影
IT产品搜索 
  IT技术 ·开发·网管·安全·数据库·操作系统
  信息化 ·热点·专题·访谈·周刊·方案案例
· 回顾ERP市场发展经历 提醒CIO选型需理性
· 网银系统拥堵 SOA从治病良方到罪魁祸首
· 国产ITIL运维先行者 四大厂商角力BI市场
· 金融行业GSN专题解决方案 企业网解决方案
  IT博客 ·曾剑秋·项立刚·Java学习·网管
  IT技术论坛 ·开发·网管·安全·数据库·系统