package sino.person.web.filter;
import java.io.IOException;
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;
public class CharacterEncodingFilter implements Filter {
public void destroy() {
// TODO Auto-generated method stub
}
public void doFilter(ServletRequest req, ServletResponse resp,
FilterChain chain) throws IOException, ServletException {
//判断如果客户端使用get方式提交参数,则对参数硬编码
HttpServletRequest request = (HttpServletRequest)req;
String method = request.getMethod();
if(method.equalsIgnoreCase("get")){
//获取地址栏中传递的所有参数名
Enumeration names = request.getParameterNames();
while(names.hasMoreElements()){
//获取每个参数名
String name = (String)names.nextElement();
//根据参数名,获取每个参数值
String[] ss = req.getParameterValues(name);
//对每个值进行字符编码
for(int i = 0; i < ss.length ; i++){
ss[i] = new String(ss[i].getBytes("iso-8859-1"),"gbk");
}
}
}
//如果使用post方式提交,则设置req和resp即可
request.setCharacterEncoding("gbk");
resp.setCharacterEncoding("gbk");
chain.doFilter(request, resp);
}
public void init(FilterConfig arg0) throws ServletException {
}
}