java的web程序经常出现中文乱码的问题,用一个实现了Filter接口的过滤器类可以较好地解决这个问题。

方式一 EncodingFilter

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

public class EncodingFilter implements Filter {

private FilterConfig filterConfig =
null;
    private String encoding = null;

@Override
    public void destroy() {
         filterConfig = null;
         encoding = null;
     }

@Override
    public void doFilter(ServletRequest
request, ServletResponse response,
             FilterChain filterChain)
throws IOException, ServletException {
        if
(request.getCharacterEncoding() == null) {
            if (encoding != null) {
                
request.setCharacterEncoding(encoding);
             }
            
filterChain.doFilter(request, response);
         }
     }

@Override//初始化的时候就去web.xml配置文件中拿到对应编码格式
    public void init(FilterConfig
filterConfig) throws ServletException {
        this.filterConfig = filterConfig;
        this.encoding =
filterConfig.getInitParameter("encoding");
     }
}

web.xml中配置

<filter>
     
<filter-name>EncodingFilter</filter-name>
     
<filter-class>EncodingFilter</filter-class>
      <init-param>
          <param-name>encoding</param-name>
         
<param-value>UTF-8</param-value>
      </init-param>
  </filter>
  <filter-mapping>
     
<filter-name>EncodingFilter</filter-name>
     
<url-pattern>/*</url-pattern>
  </filter-mapping>

方式二

import java.io.IOException;
import java.util.Enumeration;

import javax.servlet.*;

public class WordFilter implements Filter {

public void destroy() {
// TODO Auto-generated method stub

}

@SuppressWarnings("unchecked")
public void doFilter(ServletRequest req, ServletResponse res,
  FilterChain chain) throws IOException, ServletException {
  HttpServletRequest request=(HttpServletRequest)req;
  HttpServletResponse response=(HttpServletResponse)res;
  if(request.getMethod().equalsIgnoreCase("get")){//get提交方式
    Enumeration em=request.getParameterNames();
    while(em.hasMoreElements()){
      String name=em.nextElement().toString();
      String[] values=request.getParameterValues(name);
      for(int i=0;i<values.length;i++){
        values[i]=new String(values[i].getBytes("iso-8859-1"),"utf-8");//把所有字符都转换为指定的编码格式
      }
    }
  }else{
    request.setCharacterEncoding("utf-8");
  }
  chain.doFilter(request, response);
}

  public void init(FilterConfig arg0) throws ServletException {
    // TODO Auto-generated method stub

  }

}

web.xml中配置

<filter>
<filter-name>WordFilter</filter-name>
<filter-class>filter.WordFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>WordFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>

最新文章

  1. 恢复SQL Server被误删除的数据(再扩展)
  2. react 犯错
  3. Android之ListView性能优化——一行代码绑定数据——万能适配器
  4. android 修改videoview的宽度和高度
  5. knockoutJS学习笔记06:ko数组与模板绑定
  6. zabbix 3.0快速安装简介(centos 7)
  7. Google翻译请求(难点是tk参数)
  8. javascript error
  9. Asp.net开启分布式事务管理
  10. UOJ Round #8 赴京赶考 解题报告
  11. 阐述linux IPC(五岁以下儿童):system V共享内存
  12. [google面试CTCI] 2-0.链表的创建
  13. 数据意识崛起,从企业应用看BI软件的未来发展
  14. iOS真机调试配置
  15. 动态规划——Burst Ballons
  16. 正则表达式在python中的简单使用
  17. C#中 Excel和其他文件类型的Content-Type/mime-type
  18. STL的基本介绍
  19. 基于emoji 国际通用表情在web上的输入与显示的记录
  20. placeholder测试

热门文章

  1. 编译原理实习(应用预测分析法LL(1)实现语法分析)
  2. mac上创建MySQL的基本步骤
  3. java学习笔记(2):获取文件名和自定义文件过滤器
  4. js三级省市区选择
  5. 记一次mybatis的classpath踩坑记录
  6. JSP获取客户端的IP地址的方法
  7. Python基础9- 字典
  8. jQuery Dialog and timepicker显示层的问题
  9. 自定义UICollectionViewLayout之瀑布流
  10. float使内联支持宽高