字符过滤器
package com.pdworld.web.filter;
import java.io.IOException;
import java.util.Collection;
import java.util.Iterator;
import java.util.Map;
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 Encode implements Filter {
private String encode;
private String decode;
public void destroy() {
}
public void doFilter(ServletRequest request, ServletResponse response,
FilterChain chain) throws IOException, ServletException {
HttpServletRequest req=(HttpServletRequest)request;
HttpServletResponse resp=(HttpServletResponse)response;
//获得请求方式
String method=req.getMethod();
//post 请求可直接设置编码方式
if("post".equalsIgnoreCase(method)){
System.out.println("进行编码!");
request.setCharacterEncoding("GBK");
response.setCharacterEncoding("GBK");
}else{
//get 请求
//从请求中获得所有参数的键值对
Map params=req.getParameterMap();
//获得所有参数的值
Collection c=params.values();
//迭代出每一个参数
for(Iterator it=c.iterator();it.hasNext();){
String[] values=(String[])it.next();
//对每一个字符进行重新的编码解码
for(int i=0;i<values.length;i++){
values[i]=new String(values[i].getBytes(encode),decode);
}
}
//将回复的编码设置为utf-8
response.setCharacterEncoding("GBK");
}
//将请求传递到下一个环节
chain.doFilter(request, response);
}
public void init(FilterConfig config) throws ServletException {
encode=config.getInitParameter("encode");
decode=config.getInitParameter("decode");
}
}