過濾器 ---- 解決中文亂碼(修改版)

 EncodingFilter.java:
package com.fzw.util;

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

import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

public class EncodingFilter implements Filter{

  private String encoding = "UTF-8";
    
  public String toGBK(String inStr) throws UnsupportedEncodingException{
    String outStr = "";
    if(inStr != null){
      outStr = new String(inStr.getBytes("ISO-8859-1"),"GBK");
    }
    return outStr;
  }
  public void destroy() {
    // TODO Auto-generated method stub
    
  }

  public void doFilter(ServletRequest request, ServletResponse response, FilterChain filterChain) throws IOException, ServletException {
    
    HttpServletRequest req = (HttpServletRequest)request;
    HttpServletResponse res = (HttpServletResponse)response;    
    
    String method = req.getMethod();    
    if(method.equals("post")){
      req.setCharacterEncoding(this.encoding);
    }else{
      Enumeration<String> paramNames = req.getParameterNames();
      while(paramNames.hasMoreElements()){
        String name = paramNames.nextElement();
        String[] values = req.getParameterValues(name);
        if(values != null){
          for(int i = 0;i<values.length;i++){
            String vluStr = toGBK(values[i]);
            values[i] = vluStr;
          }
          req.setAttribute(name, values);
        }
      }    
    }
    
    res.setContentType("text/html;charset=GBK");
    filterChain.doFilter(request, response);
    
  }

  public void init(FilterConfig config) throws ServletException {
    String encoding = config.getInitParameter("encoding");
    if(encoding != null && encoding.trim().length()>0){
      this.encoding = encoding;
    }
    
  }

}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章